[PATCH 1/3] winedbg: Detect and handle identical stack frames when printing a backtrace.

Zebediah Figura z.figura12 at gmail.com
Sun Jan 14 19:01:13 CST 2018


Same as gdb, minus the 'corrupt stack?' message.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 programs/winedbg/stack.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c
index f49480a..519aa69 100644
--- a/programs/winedbg/stack.c
+++ b/programs/winedbg/stack.c
@@ -322,6 +322,15 @@ static void backtrace(void)
          dbg_curr_thread->curr_frame < dbg_curr_thread->num_frames;
          dbg_curr_thread->curr_frame++)
     {
+        if (dbg_curr_thread->curr_frame > 0 &&
+            !memcmp(&dbg_curr_thread->frames[dbg_curr_thread->curr_frame].addr_frame,
+                    &dbg_curr_thread->frames[dbg_curr_thread->curr_frame-1].addr_frame,
+                    sizeof(ADDRESS64)))
+        {
+            dbg_printf("Backtrace stopped: previous frame identical to this frame\n");
+            break;
+        }
+
         dbg_printf("%s%d ", 
                    (cf == dbg_curr_thread->curr_frame ? "=>" : "  "),
                    dbg_curr_thread->curr_frame);
-- 
2.7.4




More information about the wine-devel mailing list