Re: Anyone interested in having additional debugging support in NPTL via a tracing facility?
Ric Wheeler <[email protected]> Fri, 30 Jan 2004 09:19:46 -0500
| Newsgroups | gmane.comp.lib.phil |
|---|---|
| Message-ID | <[email protected]> |
I think that this would be very useful for anyone who needs to dig into multi-threaded performance/debugging. Ric Jerry Harrow wrote: >Sorry for the re-send, but appearently the mail system truncated the >previous message after the first paragraph. Hopefully the whole thing >comes through this time. > >-Jer >============================================= > >I've had some on & off discussions with Ulrich about adding detailed >event tracing support to NPTL for quite a while. While favoring the >idea in general, Ulrich isn't convinced that people (i.e. you all) have >much of a desire for it. When I last posted a proposal in this regard >(https://listman.redhat.com/archives/phil-list/2002-December/msg00043.html) > there was only one reply -- obviously not an overwhelming >endorsement. I've done some updates on the original proposal and >published it to >ftp://ftp.compaq.com/pub/products/visualthreads/Linux/NPTLTracingV2.html > > >Is there any significant interest in having support for this kind of >tracing/debug in NPTL? > > >Let me summarize the concepts: > >* Add call-outs at most significant state changes in NPTL. This would >include attempt to lock a mutex, blocking while locking a mutex, >acquiring a mutex, thread creation, thread termination, etc. > >* The call-outs are directed to a replaceable shared library which >allows activity to be communicated, or analyzed in whatever manner is >desired. This is basically an extension of the hooks libthread_db.so >uses to support GDB, but it can invoke locally loaded code to handle the >event. > >* A simple text log writer would be provided with NPTL to make it useful >out-of-the-box and as an example of how to use the interfaces. Another >relatively simple tracing engine that could be built is a shared-memory >ring buffer. So by just defining an environment variable, you could get >a text file describing all the threading activity of an application. > >Potential Concerns some people may have: > >* Won't having all these event points in the code cause reduced >performance? > >When we built similar capability into the Tru64 UNIX pthreads library it >was done by having a bit test before each event, and it didn't result in >any significant impact -- although in that case our compilers knew how >to move the event code to "cold" sections of the library through >profile-directed optimization. When HP-UX added similar tracing to its >thread library, it supplied a separate version of libpthread.so which >exactly matches the default library except with tracing support. In >that case there is no runtime overhead unless LD_LIBRARY_PATH is used to >redirect to the tracing library. > >* Is this really useful without writing a bunch of code? > >My suggestion is to provide a simple tracing engine with NPTL that >writes out events to a file, so that could be edited/searched with >common tools like sed/awk/perl etc. Using this it is very easy to find >pthread functions that are failing for unexpected reasons (how many of >you always check the status of pthread_mutex_lock?). To write a tracing >engine it only takes 4 routines (basically init, fini, re-init on fork, >and event write) so it is very easy to build special-purpose event >handling to help debug a particular problem in your application >(especially when building from an example). For more details and an >example see the updated proposal. > > >So if there is interest in this type of facility, I'd be glad to help >put it in place; either in the proposed form or perhaps a simplified >version. The existing proposal is very detailed and almost completely >isolates the trace engine from the libpthread.so implementation details. >Though it may seem complex, the NPTL version of these changes is the >addition of about 81 lines of code plus one module to load the trace >engine, and format the events. > >-Jer > >===================================================== > >Jerry J. Harrow, Jr. >Hewlett-Packard Company >110 Spit Brook Rd >Nashua, NH 03062-2698 >USA >Jerry.Harrow at hp dot com >Telephone: 603.884.2193 > > > >