From 8b5be64507380baa2f932ac819c190b2bb716cf6 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 15 Aug 2024 12:23:08 -0700 Subject: [PATCH] fix primary module selection in multi-process scenarios --- src/ctrl/ctrl_core.c | 14 +++++++------- src/df/core/df_core.c | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index d07a8df0..b4e6fb33 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -4665,17 +4665,17 @@ ctrl_thread__run(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg) process = process->next) { if(process->kind != CTRL_EntityKind_Process) { continue; } - for(CTRL_Entity *module = process->first; - module != &ctrl_entity_nil; - module = module->next) + for(CTRL_Entity *mod = process->first; + mod != &ctrl_entity_nil; + mod = mod->next) { - if(module->kind != CTRL_EntityKind_Module) { continue; } - CTRL_Entity *dbg_path = ctrl_entity_child_from_kind(module, CTRL_EntityKind_DebugInfoPath); + if(mod->kind != CTRL_EntityKind_Module) { continue; } + CTRL_Entity *dbg_path = ctrl_entity_child_from_kind(mod, CTRL_EntityKind_DebugInfoPath); DI_Key dbgi_key = {dbg_path->string, dbg_path->timestamp}; eval_modules[eval_module_idx].rdi = di_rdi_from_key(di_scope, &dbgi_key, max_U64); - eval_modules[eval_module_idx].vaddr_range = module->vaddr_range; + eval_modules[eval_module_idx].vaddr_range = mod->vaddr_range; eval_modules[eval_module_idx].space = (U64)process; - if(contains_1u64(module->vaddr_range, thread_rip_vaddr)) + if(mod == module) { eval_modules_primary = &eval_modules[eval_module_idx]; } diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index a8104877..242704f4 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -8202,12 +8202,12 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) U64 eval_module_idx = 0; for(DF_EntityNode *n = all_modules.first; n != 0; n = n->next, eval_module_idx += 1) { - DF_Entity *module = n->entity; - DI_Key dbgi_key = df_dbgi_key_from_module(module); + DF_Entity *m = n->entity; + DI_Key dbgi_key = df_dbgi_key_from_module(m); eval_modules[eval_module_idx].rdi = di_rdi_from_key(df_state->frame_di_scope, &dbgi_key, 0); - eval_modules[eval_module_idx].vaddr_range = module->vaddr_rng; - eval_modules[eval_module_idx].space = (U64)df_entity_ancestor_from_kind(module, DF_EntityKind_Process); - if(contains_1u64(module->vaddr_rng, rip_voff)) + eval_modules[eval_module_idx].vaddr_range = m->vaddr_rng; + eval_modules[eval_module_idx].space = (U64)df_entity_ancestor_from_kind(m, DF_EntityKind_Process); + if(module == m) { eval_modules_primary = &eval_modules[eval_module_idx]; }