This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH RFA/RFC] Don't use lwp_from_thread() in thread_db_wait()


On Mon, Mar 11, 2002 at 04:45:54PM -0700, Kevin Buettner wrote:
> I'm seeing the following failure when I run the gdb testsuite on an
> SMP machine (GNU/Linux/x86):
> 
> FAIL: gdb.threads/pthreads.exp: continue to bkpt at common_routine in thread 2

Thank you for investigating this!  I've been seeing it somewhat
erratically for months, but not had any idea where to start.

> thread_db_wait() wants to learn the lwp id of the thread that it
> should wait for so that it can ask the lwp layer to wait on the lwp
> corresponding to the thread in question.  In order to do this, it
> calls lwp_from_thread().  lwp_from_thread needs help from the
> libthread_db.so to figure this out, so it calls td_ta_map_id2thr(). 
> BUT, this libthread_db function must interrogate the inferior
> process's memory to look at the thread data structures.  To do this,
> it calls back into gdb, using ps_pdread() to fetch the memory in
> question.  Eventually, on Linux, ptrace() gets called to actually
> fetch the memory.

There's another solution that I see.  At the top of thread-db is the
comment:

/* FIXME: There is certainly some room for improvements:
   - Cache LWP ids.

This would be a tremendous performance win, and fix this problem.  But
that may be a slightly longer term solution.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]