<div dir="ltr">Would be great if we had a test that verified this.  I think we could do this by making a small program that gets its own main thread id at runtime and stores it in a local variable.  Generate a core dump while stopped at a breakpoint right after the variable is initialized.  Then have the test verify that whatever command reports the current thread is has the same value as the variable.</div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 30, 2015 at 9:02 AM Ed Maste <<a href="mailto:emaste@freebsd.org">emaste@freebsd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 30 July 2015 at 10:44, Adrian McCarthy <<a href="mailto:amccarth@google.com" target="_blank">amccarth@google.com</a>> wrote:<br>
> I noticed that while studying the code in order to determine how to do the<br>
> same thing for Windows mini dumps.  Note that the loop index is treated as<br>
> the thread ID in ProcessElfCore::UpdateThreadList:<br>
><br>
>     for (lldb::tid_t tid = 0; tid < num_threads; ++tid)<br>
>     {<br>
>         const ThreadData &td = m_thread_data[tid];<br>
>         lldb::ThreadSP thread_sp(new ThreadElfCore (*this, tid, td));<br>
>         new_thread_list.AddThread (thread_sp);<br>
>     }<br>
><br>
> I wondered if this was intentional, to avoid confusion between the dead<br>
> threads and any live threads that might happen to be using a recycled thread<br>
> ID.<br>
<br>
I suspect it's not intentional, and that it just wasn't apparent to<br>
the original author how to obtain the tid. For FreeBSD the tid is<br>
(somewhat unintuitively) found in the pr_pid field of the NT_PRSTATUS<br>
note. I've put a change in review (<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D11652&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=DDUMf06MYELAe1Nlv7KChiwJLLHbYha4jtK_AOiWqwQ&m=DZQ9-MJBCEUltZMWlZK6OIstlW8HPLRvz7bwvfRB2FI&s=Jm-IkwZc4RfcACgZLlHFC5-PyDbrBVRwmABExAS8lX0&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D11652</a>)<br>
that fixes this for FreeBSD:<br>
<br>
(lldb) thread list<br>
Process 0 stopped<br>
* thread #1: tid = 102802, 0x00000008008fa4fa<br>
libc.so.7`__sys_nanosleep + 10 at _nanosleep.S:3, name = 'sleep', stop<br>
reason = signal SIGABRT<br>
<br>
If someone can tell me where to obtain the Linux tid I'll update the patch.<br>
_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank">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>
</blockquote></div>