<div dir="ltr">I noticed that while studying the code in order to determine how to do the same thing for Windows mini dumps.  Note that the loop index is treated as the thread ID in ProcessElfCore::UpdateThreadList:<div><br></div><div><div><span style="font-family:monospace,monospace;font-size:x-small">    for (lldb::tid_t tid = 0; tid < num_threads; ++tid)</span><br></div><div><font face="monospace, monospace" size="1">    {</font></div><div><font face="monospace, monospace" size="1">        const ThreadData &td = m_thread_data[tid];</font></div><div><font face="monospace, monospace" size="1">        lldb::ThreadSP thread_sp(new ThreadElfCore (*this, tid, td));</font></div><div><font face="monospace, monospace" size="1">        new_thread_list.AddThread (thread_sp);</font></div><div><font face="monospace, monospace" size="1">    }</font></div><div><br></div><div>I wondered if this was intentional, to avoid confusion between the dead threads and any live threads that might happen to be using a recycled thread ID.</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 29, 2015 at 6:41 PM, Mike McLaughlin <span dir="ltr"><<a href="mailto:mikem@microsoft.com" target="_blank">mikem@microsoft.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="#0563C1" vlink="#954F72">
<div>
<p class="MsoNormal">When I load a core dump with lldb 3.6, the tids displayed in “thread list” and more importantly returned by lldb::SBThread::GetThreadID() (used in a lldb plugin I wrote) doesn’t match the tids from the live session the core was generated
 from.  gdb displays the correct tids on the same core dump (see below).  My plugin depends on the above api returning the tid during the live session.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Can anybody help?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">lldb-3.6<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">(lldb) target create --core /tmp/core-corerun-6-1000-1000-20870-1438119958 /tmp/corerun<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Core file '/tmp/core-corerun-6-1000-1000-20870-1438119958' (x86_64) was loaded.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Process 0 stopped<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">* thread #1: tid = 0x0000, 0x00007f01fe64d267 libc.so.6`gsignal + 55, name = 'corerun', stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">    frame #0: 0x00007f01fe64d267 libc.so.6`gsignal + 55<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">-> 0x7f01fe64d267: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe64d269: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe64d26b: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe64d26d: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #2: tid = 0x0001, 0x00007f01fe7138dd libc.so.6`__poll + 45, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">    frame #0: 0x00007f01fe7138dd libc.so.6`__poll + 45<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">-> 0x7f01fe7138dd: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe7138df: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe7138e1: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe7138e3: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #3: tid = 0x0002, 0x00007f01fd27dda0 libpthread.so.0`__pthread_cond_wait + 192, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">    frame #0: 0x00007f01fd27dda0 libpthread.so.0`__pthread_cond_wait + 192<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">-> 0x7f01fd27dda0: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fd27dda2: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fd27dda4: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fd27dda6: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #4: tid = 0x0003, 0x00007f01fd27e149 libpthread.so.0`__pthread_cond_timedwait + 297, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">    frame #0: 0x00007f01fd27e149 libpthread.so.0`__pthread_cond_timedwait + 297<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">-> 0x7f01fd27e149: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fd27e14b: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fd27e14d: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fd27e14f: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #5: tid = 0x0004, 0x00007f01fe70f28d libc.so.6`__open64 + 45, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">    frame #0: 0x00007f01fe70f28d libc.so.6`__open64 + 45<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">-> 0x7f01fe70f28d: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe70f28f: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe70f291: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe70f293: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #6: tid = 0x0005, 0x00007f01fe70f49d libc.so.6`__read + 45, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">    frame #0: 0x00007f01fe70f49d libc.so.6`__read + 45<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">-> 0x7f01fe70f49d: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe70f49f: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe70f4a1: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">   0x7f01fe70f4a3: addb   %al, (%rax)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">(lldb) thread list<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Process 0 stopped<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">* thread #1: tid =
<span style="color:red">0x0000</span>, 0x00007f01fe64d267 libc.so.6`gsignal + 55, name = 'corerun', stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #2: tid =
<span style="color:red">0x0001</span>, 0x00007f01fe7138dd libc.so.6`__poll + 45, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #3: tid =
<span style="color:red">0x0002</span>, 0x00007f01fd27dda0 libpthread.so.0`__pthread_cond_wait + 192, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #4: tid =
<span style="color:red">0x0003</span>, 0x00007f01fd27e149 libpthread.so.0`__pthread_cond_timedwait + 297, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #5: tid =
<span style="color:red">0x0004</span>, 0x00007f01fe70f28d libc.so.6`__open64 + 45, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  thread #6: tid =
<span style="color:red">0x0005</span>, 0x00007f01fe70f49d libc.so.6`__read + 45, stop reason = signal SIGABRT<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">------------------------------------------<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">gdb /tmp/corerun /tmp/core-corerun-6-1000-1000-20870-1438119958<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Copyright (C) 2015 Free Software Foundation, Inc.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">License GPLv3+: GNU GPL version 3 or later <<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__gnu.org_licenses_gpl.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=DDUMf06MYELAe1Nlv7KChiwJLLHbYha4jtK_AOiWqwQ&m=Y5Rfb57Orr5aTgqjYAdzgCzrR_oNggFT95K-dAoSWqQ&s=hSlvBEZeP90Mialtf5R3g4kv_gngZTPyQWuKaadaiis&e=" target="_blank">http://gnu.org/licenses/gpl.html</a>><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">This is free software: you are free to change and redistribute it.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">There is NO WARRANTY, to the extent permitted by law.  Type "show copying"<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">and "show warranty" for details.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">This GDB was configured as "x86_64-linux-gnu".<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Type "show configuration" for configuration details.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">For bug reporting instructions, please see:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New""><<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gnu.org_software_gdb_bugs_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=DDUMf06MYELAe1Nlv7KChiwJLLHbYha4jtK_AOiWqwQ&m=Y5Rfb57Orr5aTgqjYAdzgCzrR_oNggFT95K-dAoSWqQ&s=-UUmIeMUvTrxp9vs8aUBJnM1WjL5zdWD0GQw7ZU7rzE&e=" target="_blank">http://www.gnu.org/software/gdb/bugs/</a>>.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Find the GDB manual and other documentation resources online at:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New""><<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gnu.org_software_gdb_documentation_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=DDUMf06MYELAe1Nlv7KChiwJLLHbYha4jtK_AOiWqwQ&m=Y5Rfb57Orr5aTgqjYAdzgCzrR_oNggFT95K-dAoSWqQ&s=ImFTWbdDLXoZTQDlb0APqqln8QUqT51AvrWDiY7LKOI&e=" target="_blank">http://www.gnu.org/software/gdb/documentation/</a>>.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">For help, type "help".<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Type "apropos word" to search for commands related to "word"...<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Reading symbols from /tmp/corerun...done.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">warning: exec file is newer than core file.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[New LWP 20870]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[New LWP 20871]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[New LWP 20874]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[New LWP 20875]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[New LWP 20873]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[New LWP 20872]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">warning: .dynamic section for "/ssd/coreclr/bin/Product/Linux.x64.Debug/libcoreclr.so" is not at the expected address (wrong library or version mismatch?)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">[Thread debugging using libthread_db enabled]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Core was generated by `./corerun HelloWorld.exe linux'.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">Program terminated with signal SIGABRT, Aborted.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">#0  0x00007f01fe64d267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">55      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">(gdb) info threads<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  Id   Target Id         Frame<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  6    Thread 0x7f01fc42a700 (LWP
<span style="color:red">20872</span>) 0x00007f01fe70f49d in read () at ../sysdeps/unix/syscall-template.S:81<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  5    Thread 0x7f01fbc29700 (LWP
<span style="color:red">20873</span>) 0x00007f01fe70f28d in open64 () at ../sysdeps/unix/syscall-template.S:81<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  4    Thread 0x7f01faafb700 (LWP
<span style="color:red">20875</span>) pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  3    Thread 0x7f01fb428700 (LWP
<span style="color:red">20874</span>) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">  2    Thread 0x7f01fcc2b700 (LWP
<span style="color:red">20871</span>) 0x00007f01fe7138dd in poll () at ../sysdeps/unix/syscall-template.S:81<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">* 1    Thread 0x7f01ff61a740 (LWP
<span style="color:red">20870</span>) 0x00007f01fe64d267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Courier New"">(gdb)<u></u><u></u></span></p>
</div>
</div>

<br>_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
<br></blockquote></div><br></div>