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] |
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] |