linux_demon: PTRACE_EVENT_STOPs can sometimes be reported even if a thread has already hit a trap (e.g. a trap net or breakpoint trap). this would sometimes cause spurious SIGTRAPs after issuing a PTRACE_INTERRUPT - so we need to flag halted threads to not treat that as a 'real' trap. furthermore, even though that trap was hit, it does not guarantee that the debugger would next see a SIGTRAP. that would cause spurious SIGILLs, because we'd resume threads *after* the trap, despite not seeing the trap, so they'd just see a malformed instruction (the bytes subsequent the initial trap). so in those cases, we need to roll such threads back, so that they re-execute the trap, and so that we see a regular SIGTRAP, and handle the trap correctly.

This commit is contained in:
Ryan Fleury committed 2026-09-29 12:28:05 -06:00
1 parent 2933143b08
commit 0b91cab00a
3 files changed
+75 -47

No files matched your search

+1
View File
@@ -178,6 +178,7 @@ struct LNX_DMN_Thread
void *reg_block;
B32 is_reg_block_dirty;
B32 pass_through_signal;
B32 ghost_trap;
U64 pass_through_signo;
U64 orig_rax;
U64 dtv_base_vaddr;