Check if there is catch(...) somewhere in the code, or __try/__except. Also,
run the system under remote debugger.
Alex Blekhman wrote:
"Martin T." wrote:
C++ Windows application / release build with all optimizations disabled
/ Visual Studio 2005 / Windows XP sp2
I am facing the problem that our application terminates unexpectedly
without any debug/reporting mechanism being invoked, i.e. it terminates
*as if* I would issue the call ::TerminateProcess(hCurrent, 0xC0000005)
manually. However, we are sure that no user code in our application
calls TerminateProcess (let alone with the code for access violation).
What you see is typical to the foloowng scenario:
1. A thread exhausts its stack space; EXCEPTION_STACK_OVERFLOW exception
(0xC00000FD) is risen.
2. A thread swallows EXCEPTION_STACK_OVERFLOW and continue execution.
3. At the next attempt to grow stack, the system takes control, issues
EXCEPTION_ACCESS_VIOLATION (0xC0000005) exception and terminates the
process immediately - without any GUI message!
Thanks for pointing this out explicitly.
However, this scenario requires that either a) we have two subsequent
stack overflows or b) the EXCEPTION_STACK_OVERFLOW is "handled" by
EXCEPTION_CONTINUE_EXECUTION, which we do not do (at least not explicitly.
Di you know of any "system" mechanism that would do that, as we do not
explicitly catch these exceptions ... ?
cheers,
Martin