<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/119598>119598</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [LLDB][Minidump] Backtrace broken on minidumps when binary also loaded
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          strangewiz
      </td>
    </tr>
</table>

<pre>
    After e9c8f75d45 `[LLDB][Minidump] Have Minidumps save off and properly read TLS data (#109477)`, minidumps loaded with the binary adjacent cannot show a correct backtrace beyond the first frame.

e.g. we see:
(lldb) bt
* thread #1
  * frame #0: 0x000000018d8813c8
    frame #1: 0x000000018d760714

instead of:
(lldb) bt
* thread #1
  * frame #0: 0x000000018d8813c8 libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x000000018d760714 libsystem_c.dylib`nanosleep + 220
    frame #2: 0x000000018d7696f8 libsystem_c.dylib`sleep + 52
    frame #3: 0x0000000100373f40 simple`func4 + 16
    frame #4: 0x0000000100373f54 simple`func3 + 12
    frame #5: 0x0000000100373f68 simple`func2 + 12
 frame #6: 0x0000000100373f7c simple`func1 + 12
    frame #7: 0x0000000100373f90 simple`main + 12
    frame #8: 0x000000018d53c274 dyld`start + 2840


Steps to reproduce:

lldb built with:
 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS='clang;lld;compiler-rt;lldb' -DCMAKE_C_COMPILER=$CLANG_BASE_PATH/bin/clang -DCMAKE_CXX_COMPILER=$CLANG_BASE_PATH/bin/clang++ -DCMAKE_ASM_COMPILER=$CLANG_BASE_PATH/bin/clang -DCMAKE_ASM_COMPILER_ID="Clang" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DCMAKE_OSX_SYSROOT=$PWD/../sysroot/MacOSX.sdk -DDARWIN_macosx_CACHED_SYSROOT=$PWD/../sysroot/MacOSX.sdk -DDARWIN_iphoneos_CACHED_SYSROOT=$PWD/../sysroot/iPhoneOS.sdk -DDARWIN_iphonesimulator_CACHED_SYSROOT=$PWD/../sysroot/iPhoneSimulator.sdk ../llvm
 and:
 $ ninja lldb

at revision: e9c8f75d45

$ cd reproduce_folder
$ cat simple.c
#include <unistd.h>

[[clang::optnone]]
void func4() {
 sleep(1000);
}

[[clang::optnone]]
void func3() {
 func4();
}

[[clang::optnone]]
void func2() {
 func3();
}

[[clang::optnone]]
void func1() {
    func2();
}

int main() {
    func1();
    return 0;
}

$ clang -Os simple.c -o simple

$ ./simple &
[1] 88598

$ sudo crashpad_generate_dump 88598
Password:

$ ~/llvm-project/build/bin/lldb
error: invalid value path 'symbols.swift-module-loading-mode'
(lldb) target create -c minidump.88598
warning: (arm64e) /usr/lib/system/libsystem_kernel.dylib address 0x000000018d8c5000 maps to more than one section: libsystem_kernel.dylib.__DATA_DIRTY and libdyld.dylib.__TEXT
warning: (arm64e) /usr/lib/system/libsystem_platform.dylib address 0x000000018d8f8000 maps to more than one section: libsystem_platform.dylib.__DATA_CONST and libsystem_info.dylib.__TEXT
Core file 'reproduce_folder/minidump.88598' (aarch64) was loaded.
(lldb) bt
* thread #1
  * frame #0: 0x000000018d8813c8
    frame #1: 0x000000018d760714
(lldb) ^D

// rebuild with `DynamicLoader *GetDynamicLoader() override { return nullptr; }`, or just reset to previous revision, 2ff4c25b7e
diff --git a/lldb/source/Plugins/Process/minidump/ProcessMinidump.h b/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
index 3d235670a3..83ff1512cc 100644
--- a/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
+++ b/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
@@ -53,6 +53,7 @@ public:

   Status DoLoadCore() override;

+  DynamicLoader *GetDynamicLoader() override { return nullptr; }
   // Returns AUXV structure found in the core file
   lldb_private::DataExtractor GetAuxvData() override;

// and recompile lldb

$ ~/work/llvm-project/build/bin/lldb
error: invalid value path 'symbols.swift-module-loading-mode'
(lldb) target create -c minidump.88598
warning: (arm64e) /usr/lib/system/libsystem_kernel.dylib address 0x000000018d8c5000 maps to more than one section: libsystem_kernel.dylib.__DATA_DIRTY and libdyld.dylib.__TEXT
warning: (arm64e) /usr/lib/system/libsystem_platform.dylib address 0x000000018d8f8000 maps to more than one section: libsystem_platform.dylib.__DATA_CONST and libsystem_info.dylib.__TEXT
Core file 'reproduce_folder/minidump.88598' (aarch64) was loaded.
(lldb) bt
* thread #1
  * frame #0: 0x000000018d8813c8 libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x000000018d760714 libsystem_c.dylib`nanosleep + 220
    frame #2: 0x000000018d7696f8 libsystem_c.dylib`sleep + 52
    frame #3: 0x0000000100373f40 simple`func4 + 16
    frame #4: 0x0000000100373f54 simple`func3 + 12
    frame #5: 0x0000000100373f68 simple`func2 + 12
 frame #6: 0x0000000100373f7c simple`func1 + 12
    frame #7: 0x0000000100373f90 simple`main + 12
    frame #8: 0x000000018d53c274 dyld`start + 2840
(lldb) ^D


// rebuild again with change commented out or go back to revision e9c8f75d45

$ ~/work/llvm-project/build/bin/lldb
error: invalid value path 'symbols.swift-module-loading-mode'
(lldb) target create -c minidump.88598
warning: (arm64e) /usr/lib/system/libsystem_kernel.dylib address 0x000000018d8c5000 maps to more than one section: libsystem_kernel.dylib.__DATA_DIRTY and libdyld.dylib.__TEXT
warning: (arm64e) /usr/lib/system/libsystem_platform.dylib address 0x000000018d8f8000 maps to more than one section: libsystem_platform.dylib.__DATA_CONST and libsystem_info.dylib.__TEXT
Core file 'reproduce_folder/minidump.88598' (aarch64) was loaded.
(lldb) bt
* thread #1
  * frame #0: 0x000000018d8813c8
    frame #1: 0x000000018d760714
(lldb)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWU1v4zjS_jXMpWBDoiRLPvggf_XkfZM4iD0z6ZNAkZTNjkQaJBUne9jfviDlj8RxL6Z7GljsIj5ZJT5PVZH1JYkYI9aS8xFKxiiZXpHWbpQeGauJXPOd-MdVqdjrKK8s18CHNKvShMUJoEGAkvHNzdShUDK-FVKwttmiZAq_kWcOB4EB4y5VVQGRDLZabbmuX0FzwmB1swRGLAGEM4SjMBjGaYrw0LHjCTRHjloRxhnshN2A3XAohST6FQj7RiiXFiiRUlkwG7UDAlRpzamFktAnqwnlUPJXJZmHVkIbC5UmDe-jIEdBzvvrPuw4GM5R5AQIZ3XNSoSHUFp_nYPdeIudlSjIAZzMkzhRgKIcgpeg-4UZy7IwoplfCKdl4fmydBCkYdxZIaSxToOqfq0RUIvSvBrLm-KJa8nrPnutRYkGQVEY3uyIsIWLAVIDwmP4q0a_oaVHRkmkMjXnW0-FcXBOhj-SDQdVdpHsRJTgc57oPU8QRGlUxQEY0WxrjgZB1Uoae3A4OAfHl8BJ_B4cdeAPmpNL4EH2HozfgI_IwSVkSt8jw--oTS-Bh28cboiQ38Fm55ueRBSnMbDXmrl9tkTb7sCyOOiCEQX50vKtAatA861WrKWH5AhyF5dQtqK2PiM7OdCGPHHofbkT8huB3nRym___rBj_fn0zLVZf72comk552a6hN725-eO2mN3l45tZkS-Xs4fV9eJuiaLp4u7s7v3D4v9mk5W7h3BKayLXKBrXNUPRmKpmK2que9p2shLh9Kh4UkwWt_fXN7MHj40nN_ndl2KcL2fFfb76DeF5KSTCc895Qj0-_ggO4bHbuAM6X97-lNa3uOJ66qF40inAZzvy8Pvd6vp21u0IrkVJX16c-_4PKUWH6HgXy8di-XX5sFisOnPu_5wiPO_3EZ6bV6OVsgjPbwldLB_7hj1BbzrNH_68visaQpV5KSb55LfZ9Cc5xHajJFfmr7OIe4dYLC_xGNG0NbFK_yjd8gD0rH5JXT83LmSJZPvgRTgG6QPXx5EPc2JB82dhhJIug07db58jOAbKTulRVKpmXB_uELtPzj71okhIWreMA4omrRTGsv4GRbM9l-u-43145yjK1dZKJblvrlMU5M9KMPBFzbfKIaB07Oz2RRLhLAyCwDXOyElROv1R2ug97RtNP02JP1JGf5MyfE_pitxJ0RmrkBZcUbwICd9CnFBz22oJwblp7iS7VF2Y43lCTx0K73GVjzwvA4QHnVehm4ayLBlmp3WmZQqoJmazJaxYc8k1sbxwY85x6T0xZqc0OxZcB_znPm57W62-ceri25Vgdiwp-8DlWivt4lXIZ1ILBs-kbjlsid0Awql5bUpVm77Zicr2GsXamvfceCXk2l1yhNP304cles0tUM2J5dCjx7Gsf7B3R7QU_vDcIEd0M4i533M8b412pomyS0zLm-7ywkQChDHNjXk_w9AkCAJoSNeLGqU52A2RoKQb2KjdJ-dlyn5RTPNVXkyvH1Zf_fxZi9K1vePt1exx9bc82NbEVko3_86HKvtBH96THryYLO6Wq4MX-5VCVurcmYlTUAkfiemH8oTnZ-eHU-8z0XQziJ3TO3IYuPv_mWH4pBEls2MmzhGeg-Y-6LsnATQIpq-SNILeOHO1s-MLt-9k-_RXz1xr4apvOj4ku2zrems1isbgEr575lAavrXGVX7DrTuuresBqjWnXoAngKsqpjgpU1cBmKgq6PXWwgI55CGeG9VqyhGe39ftWkjj_mlFuTFvjuAkPDwv9TdQ_gISXwAZf4GI4SgZpAGJ-v0sqqowCTGlEAbBIHab3ev1fonV_ojG-3noF3mA4gDFAfSSCOHJwI2o_l8K-xvbtqwFPVZJAFhaYlsDU-UO3-XB2fHvy7u3FeAXBo_Xvo_RB7_CQP774x9grG6pbV1GqlYyENI_hdJDjnZIt1nFVotnYnnXA6fEktmLe3q1SsMXbvP25dkJv--RV-7Kg-b70fjNMHNoITulnz47yWcn-S_uJJ9vND7faPzgG42LE8WHoYKsnUo_WtANkWtXppuGS8sZqNa62WCt_FvF7r1INw9cfDD8LLWfpfZ_oNT-zNB-xUYRG0ZDcsVHYRpFw2gYRvhqM0qjYRkkCR6QZBjjMuEJzXA0pAxnZRhk_EqMcIDjEIdhmMZJhPtDWmVVlEaM4YAkJUNxwBsi6r7Lqb7S6ythTMtHYThMhtlVTUpem8OnDD3ymVe2a4PioBbGmhPOClv7jx6XP2GMT18OtHri7tTffI3Ybbg8foKojdpv_FWr69HG2q1xI5wvLWthN23Zp6o5vHX6UA-8B24Y3jvxPML_CgAA__85gcKo">