This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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: Defunct threads on Alpha with linuxthreads


On Fri, 2005-09-16 at 14:56 +0300, Balint Cristian wrote:
> On Friday 16 September 2005 13:45, Martin Schlemmer wrote:
> 
> 
> 	Anyway 2.3.90 aka pre 2.4.5 glibc will drop linuxthread, i think there are null interests  for glibc
> to fix this issue, nptl will remain only in the future.
> 

I know, and I did mention this, but I also did mention that some of the
ev6 based boxes currently still do not work properly with 2.6 kernel's.

> > Hi,
> > There already is a bug about this issue:
> > http://sources.redhat.com/bugzilla/show_bug.cgi?id=1297
> > Basically with 2.4 or 2.6 kernels, glibc-2.3.[45] and linuxthreads,
> > there are issues with cleaning up the threads, and you get a defunct
> > process.
> > ----- test case -----
> > #include <pthread.h>
> > #include <unistd.h>
> > void myThread(void *foo) {
> > 	pthread_exit(foo);
> > }
> > int main()
> > {
> > 	pthread_t tt;
> > 	pthread_attr_t ta;
> > 
> > 	pthread_attr_init(&ta);
> > 	pthread_attr_setdetachstate(&ta, PTHREAD_CREATE_DETACHED);
> > 
> > 	pthread_create(&tt, &ta, (void* (*) (void*))myThread, (void*)NULL);
> > 
> > 	sleep(600);
> > 
> > 	return 0;
> > }
> > -----
> > 
> > Above code does the following:
> > 
> > -----
> > root      4541  0.0  0.1   4448   648 pts/0    S+   01:32   0:00 /root/pthread-test
> > root      4542  0.0  0.1   4448   648 pts/0    S+   01:32   0:00 /root/pthread-test
> > root      4543  0.0  0.0      0     0 pts/0    Z+   01:32   0:00 [pthread-test] <defunct>
> > -----
> > 
> > And of course, pid 4543 is not debug-able.  Adding a sleep and trying to
> > debug the thread that goes defunct do not show this behaviour:
> > 
> > -----
> > Attaching to process 4525
> > Using host libthread_db library "/lib/libthread_db.so.1".
> > Reading symbols from /root/pthread-test...done.
> > Reading symbols from /lib/libpthread.so.0...done.
> > [Thread debugging using libthread_db enabled]
> > [New Thread 16384 (LWP 4523)]
> > [New Thread 32769 (LWP 4524)]
> > [New Thread 16386 (LWP 4525)]
> > Loaded symbols for /lib/libpthread.so.0
> > Reading symbols from /lib/libc.so.6.1...done.
> > Loaded symbols for /lib/libc.so.6.1
> > Reading symbols from /lib/ld-linux.so.2...done.
> > Loaded symbols for /lib/ld-linux.so.2
> > 0x00000200001734f4 in nanosleep () from /lib/libc.so.6.1
> > (gdb) s
> > Single stepping until exit from function nanosleep,
> > which has no line number information.
> > [Switching to Thread 16386 (LWP 4525)]
> > pthread_handle_sigcancel (sig=524288) at descr.h:248
> > 248       return THREAD_SELF;
> > (gdb)
> > 535       if (self == __manager_thread)
> > (gdb)
> > 1069    {
> > (gdb)
> > 248       return THREAD_SELF;
> > (gdb)
> > 1069    {
> > (gdb)
> > 248       return THREAD_SELF;
> > (gdb)
> > 1069    {
> > (gdb)
> > 535       if (self == __manager_thread)
> > (gdb)
> > 1073      if (self == manager_thread)
> > (gdb)
> > 1078      if (__builtin_expect (__pthread_exit_requested, 0)) {
> > (gdb)
> > 1081        if (self == __pthread_main_thread) {
> > (gdb)
> > 1088        _exit(__pthread_exit_code);
> > (gdb)
> > *__GI__exit (status=0) at _exit.c:35
> > 35            INLINE_SYSCALL (exit, 1, status);
> > (gdb)
> >  
> > Program exited normally.
> > (gdb)
> > -----
> > 
> > Debugging the manager thread seems to just loop inside
> > __pthread_manager().  This issue is with both gcc-3.3.x and gcc-3.4.4, a
> > few versions of binutils, and glibc-2.3.[45].
> > 
> > NPTL works fine (and I know is the preferred threading implementation),
> > but currently not entirely a solution, as some of the ev6 based boxes
> > have issues with 2.6 kernels.
> > 
> > Any ideas on how to proceed in debugging this will be appreciated.
> > 
> > 
> > Regards,
> > 
> 
-- 
Martin Schlemmer

Attachment: signature.asc
Description: This is a digitally signed message part


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