dbghelp: Check that dwarf unwinder did actually unwind.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55560
Signed-off-by: Eric Pouech <epouech@codeweavers.com>
This commit is contained in:
Eric Pouech 2023-09-18 10:00:08 +02:00 committed by Alexandre Julliard
parent 80a9c0efa8
commit 9a28dbfb27

View file

@ -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);