From fdb1ad5ab6c8c24bdfc87d929cca44290bfe7e86 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Tue, 28 Oct 2025 16:27:34 -0700 Subject: [PATCH] do not unwind with PE when DWARF unwinder exits with stale flag --- src/ctrl/ctrl_core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 35f8da05..4b81d987 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -1567,7 +1567,8 @@ ctrl_reg_block_from_thread(Arena *arena, CTRL_EntityCtx *ctx, CTRL_Handle handle { U64 current_reg_gen = ctrl_reg_gen(); B32 need_stale = 1; - if(node->reg_gen != current_reg_gen && dmn_thread_read_reg_block(handle.dmn_handle, result)) + if(node->reg_gen != current_reg_gen && + dmn_thread_read_reg_block(handle.dmn_handle, result)) { if(node != 0) { @@ -2981,7 +2982,7 @@ ctrl_unwind_step(CTRL_Handle process, CTRL_Handle module, U64 module_base_vaddr, result = ctrl_unwind_step__dwarf(process, module, arch, reg_block, endt_us); - if(result.flags != 0) + if(result.flags == CTRL_UnwindFlag_Error && ~result.flags & CTRL_UnwindFlag_Stale) { switch(arch) {