diff --git a/src/dbg_engine/dbg_engine_ctrl.c b/src/dbg_engine/dbg_engine_ctrl.c index a386e67a..9af18b47 100644 --- a/src/dbg_engine/dbg_engine_ctrl.c +++ b/src/dbg_engine/dbg_engine_ctrl.c @@ -3292,7 +3292,7 @@ d_ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, D_Msg *msg, D out_evt1->vaddr_rng = r1u64(event->address, event->address+event->size); out_evt1->rip_vaddr = event->address; out_evt1->timestamp = exe_timestamp; - out_evt1->string = module_path; + out_evt1->string = str8_copy(scratch.arena, module_path); out_evt1->tls_index = event->module_info->tls_index; out_evt1->tls_offset = event->module_info->tls_offset; diff --git a/src/dbg_info/dbg_info.c b/src/dbg_info/dbg_info.c index ba0f0f3a..350e54d4 100644 --- a/src/dbg_info/dbg_info.c +++ b/src/dbg_info/dbg_info.c @@ -483,6 +483,10 @@ di_rdi_from_key(Access *access, DI_Key key, B32 high_priority, U64 endt_us) rdi = &n->rdi; access_touch(access, &n->access_pt, stripe->cv); } + if(ins_atomic_u64_eval(&n->working_count) != 0) + { + rdi = &di_rdi_parsed_nil_waiting; + } break; } } diff --git a/src/dbg_info/dbg_info.h b/src/dbg_info/dbg_info.h index 56c88acc..051ae7a5 100644 --- a/src/dbg_info/dbg_info.h +++ b/src/dbg_info/dbg_info.h @@ -305,6 +305,7 @@ struct DI_Shared //////////////////////////////// //~ rjf: Globals +global read_only RDI_Parsed di_rdi_parsed_nil_waiting = {0}; global DI_Shared *di_shared = 0; //////////////////////////////// diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 88c4427e..d151ffec 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -6180,7 +6180,7 @@ rd_window_frame(void) RDI_Parsed *rdi = di_rdi_from_key(access, dbgi_key, 0, 0); if(rdi->raw_data_size != 0) { - ui_labelf("Debug information successfully loaded from %S", dbg_info_entity->string); + ui_labelf("Debug info successfully loaded from %S", dbg_info_entity->string); } else if(dbg_info_entity->string.size != 0) { diff --git a/src/raddbg/raddbg_widgets.c b/src/raddbg/raddbg_widgets.c index 1b1548bb..c7551fe4 100644 --- a/src/raddbg/raddbg_widgets.c +++ b/src/raddbg/raddbg_widgets.c @@ -620,10 +620,19 @@ rd_title_fstrs_from_ctrl_entity(Arena *arena, D_Entity *entity, B32 include_extr Access *access = access_open(); DI_Key dbgi_key = d_dbgi_key_from_module(entity); RDI_Parsed *rdi = di_rdi_from_key(access, dbgi_key, 0, 0); - if(rdi->raw_data_size == 0) + if(rdi == &di_rdi_parsed_nil_waiting) { - dr_fstrs_push_new(arena, &result, ¶ms, str8_lit(" ")); - dr_fstrs_push_new(arena, &result, ¶ms, str8_lit("(Debug info not loaded)"), .font = rd_font_from_slot(RD_FontSlot_Main), .raster_flags = rd_raster_flags_from_slot(RD_FontSlot_Main), .size = extras_size, .color = secondary_color); + dr_fstrs_push_new(arena, &result, ¶ms, s(" ")); + dr_fstrs_push_new(arena, &result, ¶ms, s("(Loading debug info)"), .font = rd_font_from_slot(RD_FontSlot_Main), .raster_flags = rd_raster_flags_from_slot(RD_FontSlot_Main), .size = extras_size, .color = secondary_color); + } + else if(rdi == &rdi_parsed_nil) + { + dr_fstrs_push_new(arena, &result, ¶ms, s(" ")); + dr_fstrs_push_new(arena, &result, ¶ms, s("(Debug info not loaded)"), .font = rd_font_from_slot(RD_FontSlot_Main), .raster_flags = rd_raster_flags_from_slot(RD_FontSlot_Main), .size = extras_size, .color = secondary_color); + } + else + { + } access_close(access); }