From 58df68b9beb29e28a60b4d4cd6d6748551cb01ad Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 22 May 2025 17:15:51 -0700 Subject: [PATCH] adjust good-machine-code check to factor in memory read failure mask --- src/dbg_engine/dbg_engine_core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/dbg_engine/dbg_engine_core.c b/src/dbg_engine/dbg_engine_core.c index c643ecae..80d0b912 100644 --- a/src/dbg_engine/dbg_engine_core.c +++ b/src/dbg_engine/dbg_engine_core.c @@ -378,10 +378,12 @@ d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) // rjf: line vaddr range => line's machine code String8 machine_code = {0}; + B32 good_machine_code = 0; if(good_line_info) { CTRL_ProcessMemorySlice machine_code_slice = ctrl_process_memory_slice_from_vaddr_range(scratch.arena, process->handle, line_vaddr_rng, os_now_microseconds()+50000); machine_code = machine_code_slice.data; + good_machine_code = (machine_code.size == dim_1u64(line_vaddr_rng) && !machine_code_slice.any_byte_bad); LogInfoNamedBlockF("machine_code_slice") { log_infof("stale: %i\n", machine_code_slice.stale); @@ -399,7 +401,6 @@ d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) log_infof("]\n"); } } - B32 good_machine_code = (good_line_info && machine_code.size == dim_1u64(line_vaddr_rng)); // rjf: machine code => ctrl flow analysis DASM_CtrlFlowInfo ctrl_flow_info = {0}; @@ -535,12 +536,13 @@ d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread) // rjf: line vaddr range => line's machine code String8 machine_code = {0}; + B32 good_machine_code = 0; if(good_line_info) { CTRL_ProcessMemorySlice machine_code_slice = ctrl_process_memory_slice_from_vaddr_range(scratch.arena, process->handle, line_vaddr_rng, os_now_microseconds()+5000); machine_code = machine_code_slice.data; + good_machine_code = (machine_code.size == dim_1u64(line_vaddr_rng) && !machine_code_slice.any_byte_bad); } - B32 good_machine_code = (good_line_info && machine_code.size == dim_1u64(line_vaddr_rng)); // rjf: machine code => ctrl flow analysis DASM_CtrlFlowInfo ctrl_flow_info = {0};