- Fix some insidious bugs in exception handling, mostly related to the art of unwinding (RtlUnwind).

- Can't name specifics, but probably fixes multiple SEH/application bugs/regressions since about 6-8 months ago. Fixes my personal SEH test from 22 failures/crashes/BSODs to 22 succeesses...
- Also fixes some crashes in kernel-kqemu mode.

svn path=/trunk/; revision=24178
This commit is contained in:
Alex Ionescu 2006-09-17 21:09:10 +00:00
parent 45f71f78c8
commit 3e709fbbd9
3 changed files with 107 additions and 98 deletions

View file

@ -26,14 +26,12 @@ RtlRaiseException(PEXCEPTION_RECORD ExceptionRecord)
{
CONTEXT Context;
NTSTATUS Status;
DPRINT1("RtlRaiseException(Status %p)\n", ExceptionRecord);
/* Capture the context */
RtlCaptureContext(&Context);
/* Save the exception address */
ExceptionRecord->ExceptionAddress = RtlpGetExceptionAddress();
DPRINT1("ExceptionAddress %p\n", ExceptionRecord->ExceptionAddress);
/* Write the context flag */
Context.ContextFlags = CONTEXT_FULL;
@ -72,7 +70,6 @@ RtlRaiseStatus(NTSTATUS Status)
{
EXCEPTION_RECORD ExceptionRecord;
CONTEXT Context;
DPRINT1("RtlRaiseStatus(Status 0x%.08lx)\n", Status);
/* Capture the context */
RtlCaptureContext(&Context);