Eric Pouech : winedbg: Native dbghelp can modify the passed debug context in StackWalk, so guard against it.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Aug 14 14:10:23 CDT 2006


Module: wine
Branch: master
Commit: 84650ebbb2cc69dd657b1935674011da3ddcdfed
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=84650ebbb2cc69dd657b1935674011da3ddcdfed

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Sun Aug 13 20:46:54 2006 +0200

winedbg: Native dbghelp can modify the passed debug context in StackWalk, so guard against it.

---

 programs/winedbg/stack.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c
index 70a7a11..dd0877e 100644
--- a/programs/winedbg/stack.c
+++ b/programs/winedbg/stack.c
@@ -147,6 +147,10 @@ unsigned stack_fetch_frames(void)
 {
     STACKFRAME64 sf;
     unsigned     nf = 0;
+    /* as native stackwalk can modify the context passed to it, simply copy
+     * it to avoid any damage
+     */
+    CONTEXT      ctx = dbg_context;
 
     HeapFree(GetProcessHeap(), 0, dbg_curr_thread->frames);
     dbg_curr_thread->frames = NULL;
@@ -163,7 +167,7 @@ unsigned stack_fetch_frames(void)
     }
 
     while (StackWalk64(IMAGE_FILE_MACHINE_I386, dbg_curr_process->handle, 
-                       dbg_curr_thread->handle, &sf, &dbg_context, stack_read_mem,
+                       dbg_curr_thread->handle, &sf, &ctx, stack_read_mem,
                        SymFunctionTableAccess64, SymGetModuleBase64, NULL))
     {
         dbg_curr_thread->frames = dbg_heap_realloc(dbg_curr_thread->frames, 




More information about the wine-cvs mailing list