On 30 July 2015 at 10:44, Adrian McCarthy <amcca...@google.com> wrote:
> 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:
>
>     for (lldb::tid_t tid = 0; tid < num_threads; ++tid)
>     {
>         const ThreadData &td = m_thread_data[tid];
>         lldb::ThreadSP thread_sp(new ThreadElfCore (*this, tid, td));
>         new_thread_list.AddThread (thread_sp);
>     }
>
> 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.

I suspect it's not intentional, and that it just wasn't apparent to
the original author how to obtain the tid. For FreeBSD the tid is
(somewhat unintuitively) found in the pr_pid field of the NT_PRSTATUS
note. I've put a change in review (http://reviews.llvm.org/D11652)
that fixes this for FreeBSD:

(lldb) thread list
Process 0 stopped
* thread #1: tid = 102802, 0x00000008008fa4fa
libc.so.7`__sys_nanosleep + 10 at _nanosleep.S:3, name = 'sleep', stop
reason = signal SIGABRT

If someone can tell me where to obtain the Linux tid I'll update the patch.
_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to