fix primary module selection in multi-process scenarios

This commit is contained in:
Ryan Fleury
2024-08-15 12:23:08 -07:00
parent 20bde07c46
commit 8b5be64507
2 changed files with 12 additions and 12 deletions
+7 -7
View File
@@ -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];
}
+5 -5
View File
@@ -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];
}