mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 09:24:11 +00:00
Fixed issue that cause user-mode exception stack traces not to work. Patch by Mike Nordell.
svn path=/trunk/; revision=7059
This commit is contained in:
parent
8f77e7b0ae
commit
0a1e17fdad
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: catch.c,v 1.37 2003/12/12 17:09:27 weiden Exp $
|
||||
/* $Id: catch.c,v 1.38 2003/12/14 19:43:09 navaraf Exp $
|
||||
*
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/catch.c
|
||||
|
@ -99,6 +99,7 @@ KiDispatchException(PEXCEPTION_RECORD ExceptionRecord,
|
|||
PULONG Stack;
|
||||
ULONG CDest;
|
||||
char temp_space[12 + sizeof(EXCEPTION_RECORD) + sizeof(CONTEXT)]; // FIXME: HACKHACK
|
||||
PULONG pNewUserStack = (PULONG)(Tf->Esp - (12 + sizeof(EXCEPTION_RECORD) + sizeof(CONTEXT)));
|
||||
NTSTATUS StatusOfCopy;
|
||||
|
||||
/* FIXME: Forward exception to user mode debugger */
|
||||
|
@ -113,19 +114,18 @@ KiDispatchException(PEXCEPTION_RECORD ExceptionRecord,
|
|||
/* Return address */
|
||||
Stack[0] = 0;
|
||||
/* Pointer to EXCEPTION_RECORD structure */
|
||||
Stack[1] = (ULONG)&Stack[3];
|
||||
Stack[1] = (ULONG)&pNewUserStack[3];
|
||||
/* Pointer to CONTEXT structure */
|
||||
Stack[2] = (ULONG)&Stack[CDest];
|
||||
Stack[2] = (ULONG)&pNewUserStack[CDest];
|
||||
memcpy(&Stack[3], ExceptionRecord, sizeof(EXCEPTION_RECORD));
|
||||
memcpy(&Stack[CDest], Context, sizeof(CONTEXT));
|
||||
|
||||
StatusOfCopy = MmCopyToCaller((PVOID)(Tf->Esp - (12 + sizeof(EXCEPTION_RECORD) + sizeof(CONTEXT))),
|
||||
StatusOfCopy = MmCopyToCaller(pNewUserStack,
|
||||
temp_space,
|
||||
(12 + sizeof(EXCEPTION_RECORD) + sizeof(CONTEXT)));
|
||||
if (NT_SUCCESS(StatusOfCopy))
|
||||
{
|
||||
Tf->Esp = Tf->Esp -
|
||||
(12 + sizeof(EXCEPTION_RECORD) + sizeof(CONTEXT));
|
||||
Tf->Esp = (ULONG)pNewUserStack;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue