From c84c4b811a694614eb94f9ae1ad286d9b5290216 Mon Sep 17 00:00:00 2001 From: Kian Cossettini Date: Fri, 14 Aug 2026 15:39:24 -0400 Subject: [PATCH] Verify that Elf_X path is not different before returning --- dwarf/src/dwarfHandle.C | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dwarf/src/dwarfHandle.C b/dwarf/src/dwarfHandle.C index d48c471f3d..704a631852 100644 --- a/dwarf/src/dwarfHandle.C +++ b/dwarf/src/dwarfHandle.C @@ -323,7 +323,12 @@ DwarfHandle::ptr DwarfHandle::createDwarfHandle(string filename_, Elf_X *file_, map::iterator i; i = all_dwarf_handles.find(filename_); if (i != all_dwarf_handles.end()) { - return i->second; + if (i->second->origFile() == file_) + return i->second; + // A different Elf_X for a path we have already seen may mean the image + // the cached handle was built from has been closed underneath. + // Returning it would make DWARF parsing read an unmapped image. + all_dwarf_handles.erase(i); } DwarfHandle::ptr ret = DwarfHandle::ptr(