Adds fastfail subcodes as distinct failure reasons

Previously these all resulted in EXCEPTION_STACK_BUFFER_OVERRUN
but this hides various specific fast fail crash types, which
are now provided based on the exception's subcode.

Tests: added to minidump_process_unittest.cc
Bug: 865632
Change-Id: Ic6693de247da55cf6d132d108c6e20c635f366b1
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3771437
Reviewed-by: Robert Sesek <rsesek@chromium.org>
This commit is contained in:
Alex Gough 2022-07-19 05:23:55 -07:00 committed by Robert Sesek
parent 335e61656f
commit e467c59c68
4 changed files with 303 additions and 1 deletions

View file

@ -2266,4 +2266,77 @@ typedef enum {
MD_IN_PAGE_ERROR_WIN_EXEC = 8
} MDInPageErrorTypeWin;
// These constants are defined in winnt.h and are used with the
// STATUS_STACK_BUFFER_OVERRUN exception as exception subcodes.
typedef enum {
MD_FAST_FAIL_LEGACY_GS_VIOLATION = 0,
MD_FAST_FAIL_VTGUARD_CHECK_FAILURE = 1,
MD_FAST_FAIL_STACK_COOKIE_CHECK_FAILURE = 2,
MD_FAST_FAIL_CORRUPT_LIST_ENTRY = 3,
MD_FAST_FAIL_INCORRECT_STACK = 4,
MD_FAST_FAIL_INVALID_ARG = 5,
MD_FAST_FAIL_GS_COOKIE_INIT = 6,
MD_FAST_FAIL_FATAL_APP_EXIT = 7,
MD_FAST_FAIL_RANGE_CHECK_FAILURE = 8,
MD_FAST_FAIL_UNSAFE_REGISTRY_ACCESS = 9,
MD_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE = 10,
MD_FAST_FAIL_GUARD_WRITE_CHECK_FAILURE = 11,
MD_FAST_FAIL_INVALID_FIBER_SWITCH = 12,
MD_FAST_FAIL_INVALID_SET_OF_CONTEXT = 13,
MD_FAST_FAIL_INVALID_REFERENCE_COUNT = 14,
MD_FAST_FAIL_INVALID_JUMP_BUFFER = 18,
MD_FAST_FAIL_MRDATA_MODIFIED = 19,
MD_FAST_FAIL_CERTIFICATION_FAILURE = 20,
MD_FAST_FAIL_INVALID_EXCEPTION_CHAIN = 21,
MD_FAST_FAIL_CRYPTO_LIBRARY = 22,
MD_FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT = 23,
MD_FAST_FAIL_INVALID_IMAGE_BASE = 24,
MD_FAST_FAIL_DLOAD_PROTECTION_FAILURE = 25,
MD_FAST_FAIL_UNSAFE_EXTENSION_CALL = 26,
MD_FAST_FAIL_DEPRECATED_SERVICE_INVOKED = 27,
MD_FAST_FAIL_INVALID_BUFFER_ACCESS = 28,
MD_FAST_FAIL_INVALID_BALANCED_TREE = 29,
MD_FAST_FAIL_INVALID_NEXT_THREAD = 30,
MD_FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED = 31,
MD_FAST_FAIL_APCS_DISABLED = 32,
MD_FAST_FAIL_INVALID_IDLE_STATE = 33,
MD_FAST_FAIL_MRDATA_PROTECTION_FAILURE = 34,
MD_FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION = 35,
MD_FAST_FAIL_INVALID_LOCK_STATE = 36,
MD_FAST_FAIL_GUARD_JUMPTABLE = 37,
MD_FAST_FAIL_INVALID_LONGJUMP_TARGET = 38,
MD_FAST_FAIL_INVALID_DISPATCH_CONTEXT = 39,
MD_FAST_FAIL_INVALID_THREAD = 40,
MD_FAST_FAIL_INVALID_SYSCALL_NUMBER = 41,
MD_FAST_FAIL_INVALID_FILE_OPERATION = 42,
MD_FAST_FAIL_LPAC_ACCESS_DENIED = 43,
MD_FAST_FAIL_GUARD_SS_FAILURE = 44,
MD_FAST_FAIL_LOADER_CONTINUITY_FAILURE = 45,
MD_FAST_FAIL_GUARD_EXPORT_SUPPRESSION_FAILURE = 46,
MD_FAST_FAIL_INVALID_CONTROL_STACK = 47,
MD_FAST_FAIL_SET_CONTEXT_DENIED = 48,
MD_FAST_FAIL_INVALID_IAT = 49,
MD_FAST_FAIL_HEAP_METADATA_CORRUPTION = 50,
MD_FAST_FAIL_PAYLOAD_RESTRICTION_VIOLATION = 51,
MD_FAST_FAIL_LOW_LABEL_ACCESS_DENIED = 52,
MD_FAST_FAIL_ENCLAVE_CALL_FAILURE = 53,
MD_FAST_FAIL_UNHANDLED_LSS_EXCEPTON = 54,
MD_FAST_FAIL_ADMINLESS_ACCESS_DENIED = 55,
MD_FAST_FAIL_UNEXPECTED_CALL = 56,
MD_FAST_FAIL_CONTROL_INVALID_RETURN_ADDRESS = 57,
MD_FAST_FAIL_UNEXPECTED_HOST_BEHAVIOR = 58,
MD_FAST_FAIL_FLAGS_CORRUPTION = 59,
MD_FAST_FAIL_VEH_CORRUPTION = 60,
MD_FAST_FAIL_ETW_CORRUPTION = 61,
MD_FAST_FAIL_RIO_ABORT = 62,
MD_FAST_FAIL_INVALID_PFN = 63,
MD_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE_XFG = 64,
MD_FAST_FAIL_CAST_GUARD = 65,
MD_FAST_FAIL_HOST_VISIBILITY_CHANGE = 66,
MD_FAST_FAIL_KERNEL_CET_SHADOW_STACK_ASSIST = 67,
MD_FAST_FAIL_PATCH_CALLBACK_FAILED = 68,
MD_FAST_FAIL_NTDLL_PATCH_FAILED = 69,
MD_FAST_FAIL_INVALID_FLS_DATA = 70
} MDFastFailSubcodeTypeWin;
#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ */