From: Eric Pouech epouech@codeweavers.com
Wine-Bug-Id: https://bugs.winehq.org/show_bug.cgi?id=55560
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/dbghelp/cpu_x86_64.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/cpu_x86_64.c b/dlls/dbghelp/cpu_x86_64.c index c653c5fa9dd..957ce36cc5d 100644 --- a/dlls/dbghelp/cpu_x86_64.c +++ b/dlls/dbghelp/cpu_x86_64.c @@ -611,7 +611,8 @@ static BOOL fetch_next_frame(struct cpu_stack_walk *csw, union ctx *pcontext, DWORD64 cfa; RUNTIME_FUNCTION* rtf; DWORD64 base; - CONTEXT *context = &pcontext->ctx; + CONTEXT *context = &pcontext->ctx; + DWORD64 input_Rip = context->Rip;
if (!curr_pc || !(base = sw_module_base(csw, curr_pc))) return FALSE; rtf = sw_table_access(csw, curr_pc); @@ -620,7 +621,7 @@ static BOOL fetch_next_frame(struct cpu_stack_walk *csw, union ctx *pcontext, { return interpret_function_table_entry(csw, context, rtf, base); } - else if (dwarf2_virtual_unwind(csw, curr_pc, pcontext, &cfa)) + else if (dwarf2_virtual_unwind(csw, curr_pc, pcontext, &cfa) && input_Rip != context->Rip) { context->Rsp = cfa; TRACE("next function rip=%016Ix\n", context->Rip);