Is it possible to crash normal user mode in Windows 7 without getting the Windows Error Reporting dialog box? (When and if WER is normally enabled and special flags are not applied.)
Note: I am not interested in disabling WER , I am interested in crash scenarios where WER is not running, although it should > and Windows silently terminates the application.
In Windows XP, it’s quite simple to write a C or C ++ application (in user mode) that spoils its own address space in such a way that when an access violation (or other unhandled Win32 exception) is violated, Windows XP will simply silently terminate the process without informing the user generally:
... void stackbreaker() { printf("%s\n", __FUNCTION__);
The call of the above function in a simple C ++ project (in the release mode - follow the compiler optimization during testing - and do not start under the debugger) will:
- Typically complete the process under XP.
- Display the WER failure dialog box under Windows-7.
- Also: under no circumstances call your own unhandled exception filter, even if you set it through
SetUnhandledExceptionFilter
Now I'm wondering if the Windows 7 WER mechanism will be implemented in such a way that I always get a dialog box with an error for crash [a] in my application or are there scenarios of process corruption even in Windows 7, which will prevent the WER dialog from appearing?
I will add a little reading:
In the Windows book via C / C ++ (5th from Richter, Nasarr) they describe what happens in the “Crash Process” (p 711):
- Exceptional filters.
- ...
- ...
- kernel detects unhandled exception
- ALPC call blocking for Wer Service
- The WER report is launched.
- ...
Now they indicate that Win7 does this differently than Windows XP (to quote this book p. 710 :)
... Starting with Windows Vista, the UnhandledExceptionFilter function no longer sends an error report to MS servers. Instead. The kernel detects that the exception is not handled by the user-mode thread (step 4) ...
Thus, this implies that the process does not crash at all — in Vista and later — in such a way as to prevent WER from entering. I am trying to confirm or refute this.
[a]: Obviously, the process can be easily "killed" without any trace by calling one of the various *exit or terminate* functions. The question is that, if you can eliminate such a reason for termination, (how), it is possible to “knock out” the user mode process on Win7 in such a way as to prevent the WER dialog from being displayed.
windows-7 visual-c ++ winapi unhandled-exception windows-error-reporting
Martin ba
source share