dead/LinuxHost, LinuxProc and LinuxTask export a fully threaded model as demonstrated via fstack: [pmuldoon@localhost bindir]$ ps -ax | grep 3219 3219 ? Sl 0:19 /usr/lib/firefox-2.0.0.5/firefox-bin [pmuldoon@localhost bindir]$ ./fcore 3219 And doing a fstack correctly print all tasks in the backtrace: [pmuldoon@localhost bindir]$ ./fstack core.3219 Task #3219 #0 0x00110402 in __kernel_vsyscall () from #1 0x00000000 in [unknown] from Unknown Task #3241 #0 0x00110402 in __kernel_vsyscall () from #1 0x00000000 in [unknown] from Unknown Task #3242 #0 0x00110402 in __kernel_vsyscall () from #1 0x440fc48c in __pthread_cond_timedwait () from /lib/libpthread.so.0 #2 0x84ed66c6 in [unknown] from Unknown #3 0x4276c1f4 in PR_WaitCondVar () from /usr/lib/libnspr4.so #4 0x84fe8f1c in [unknown] from Unknown #5 0x84fe4f8b in [unknown] from Unknown #6 0x84ee431d in [unknown] from Unknown #7 0x440f844b in start_thread () from /lib/libpthread.so.0 #8 0x00000000 in [unknown] from Unknown Task #3244 #0 0x00110402 in __kernel_vsyscall () from #1 0x440fc206 in __pthread_cond_wait () from /lib/libpthread.so.0 #2 0x4276c286 in PR_WaitCondVar () from /usr/lib/libnspr4.so #3 0x00000000 in [unknown] from Unknown Task #3245 #0 0x00110402 in __kernel_vsyscall () from #1 0x440fc206 in __pthread_cond_wait () from /lib/libpthread.so.0 #2 0x4276c286 in PR_WaitCondVar () from /usr/lib/libnspr4.so #3 0x00000000 in [unknown] from Unknown Task #3246 #0 0x00110402 in __kernel_vsyscall () from #1 0x440fc206 in __pthread_cond_wait () from /lib/libpthread.so.0 #2 0x4276c286 in PR_WaitCondVar () from /usr/lib/libnspr4.so #3 0x00000000 in [unknown] from Unknown Task #3250 #0 0x00110402 in __kernel_vsyscall () from #1 0x440fc206 in __pthread_cond_wait () from /lib/libpthread.so.0 #2 0x4276c286 in PR_WaitCondVar () from /usr/lib/libnspr4.so #3 0x4276c2e7 in PR_Wait () from /usr/lib/libnspr4.so #4 0x427eeea1 in PL_WaitForEvent () from /usr/lib/firefox-2.0.0.5/libxpcom_core.so #5 0x84fe067d in [unknown] from Unknown #6 0x00000000 in [unknown] from Unknown However fhpd does not properly represent set information for a core file, so thread switching is not supported: [pmuldoon@localhost bindir]$ ./fhpd core.3219 Attached to core file: /home/pmuldoon/frysk_bin/frysk-core/frysk/bindir/core.3219 (fhpd) whichsets Task 0.0 is in sets: however doing the same for the live process: [pmuldoon@localhost bindir]$ ./fhpd 3219 Attached to process 3219 (fhpd) whichsets procs 1 tasks 7 Task 0.0 is in sets: Task 0.1 is in sets: Task 0.2 is in sets: Task 0.3 is in sets: Task 0.4 is in sets: Task 0.5 is in sets: Task 0.6 is in sets: This bug in fhpd essentially limits inspection to the corefile main task
Looks like the original author of CoreCommand only account for one thread per corefile. 2007-08-24 Phil Muldoon <pmuldoon@redhat.com> * CoreCommand.java (handle): Build multi-threaded set. This creates a multi-threaded set