On Mon, Oct 23, 2023 at 11:06:53PM +0000, Kurt Miller wrote: > I experimented with adding a nanosleep after pthread_create() to > see if that would resolve the segfault issue - it does, but it > also exposed a new failure mode on -current. Every so often > the test program would not exit now. Thinking it may be related > to the detached threads I reworked the test program to use attached > threads and coordinated shutdown of them with pthread_join(). These > changes did not affect the new issue - every so often the main thread > exits after pthread_join() has been called on the created threads and > the program occasionally gets stuck with a number of threads still being > reported to egdb/ps etc. These threads should all be gone now since > pthread_join() has been called on all of them. > > Here is the updated version of the program using attached threads and > a nanosleep() work-around to the original problem along with ps and egdb > output showing an example of a stuck process after the main thread exited.
This is very strange. So pthread_join() returned without an error for all threads but you still have 25 threads sitting in pthread_cond_wait() on line 55. How is this possible? Is there some issue with futex on sparc64? Could you try a build of libpthread without FUTEX support? I think you need to adjust lib/librthread/Makefile and lib/libc/thread/Makefile.inc and add sparc64 to the list of archs with hppa, m88k and sh. > ======== startup.c ================== > #include <pthread.h> > #include <err.h> > #include <time.h> > > typedef struct { > long t_num; > pthread_t t_pthread_id; > > /* sync startup/shutdown */ > long t_state; > pthread_mutex_t t_mutex; > pthread_cond_t t_cond_var; > } thread_t; > > #define NTHREADS 40 > > thread_t threads[NTHREADS]; > > void > init_threads() { > long t_num; > for (t_num=0; t_num < NTHREADS; t_num++) { > threads[t_num].t_num = t_num; > threads[t_num].t_state = 0; > if (pthread_mutex_init(&threads[t_num].t_mutex, NULL) != 0) > err(1, "pthread_mutex_init failed"); > > if (pthread_cond_init(&threads[t_num].t_cond_var, NULL) != 0) > err(1, "pthread_cond_init failed"); > } > } > > void > complete_threads() { > long t_num; > for (t_num=0; t_num < NTHREADS; t_num++) { > pthread_mutex_lock(&threads[t_num].t_mutex); > threads[t_num].t_state = 2; > pthread_cond_broadcast(&threads[t_num].t_cond_var); > pthread_mutex_unlock(&threads[t_num].t_mutex); > } > for (t_num=0; t_num < NTHREADS; t_num++) { > if (pthread_join(threads[t_num].t_pthread_id, NULL) != 0) > err(1, "pthread_join failed"); > } > } > > void * > thread_start(thread_t *thread) { > pthread_mutex_lock(&thread->t_mutex); > thread->t_state = 1; > pthread_cond_broadcast(&thread->t_cond_var); > > while (thread->t_state != 2) > pthread_cond_wait(&thread->t_cond_var, &thread->t_mutex); > > pthread_mutex_unlock(&thread->t_mutex); > > return(NULL); > } > > void > create_thread(thread_t *thread) { > int ret = pthread_create(&thread->t_pthread_id, NULL, (void* (*)(void*)) > thread_start, thread); > > struct timespec timeout = { 0, 1000*1000L }; > nanosleep(&timeout, NULL); > > /* wait for thread startup */ > pthread_mutex_lock(&thread->t_mutex); > while (thread->t_state == 0) > pthread_cond_wait(&thread->t_cond_var, &thread->t_mutex); > pthread_mutex_unlock(&thread->t_mutex); > } > > int > main( int argc, char *argv[] ) > { > long t_num; > > init_threads(); > > /* startup threads */ > for (t_num=0; t_num < NTHREADS; t_num++) { > create_thread(&threads[t_num]); > } > > complete_threads(); > > return 0; > } > ============================== > oracle$ ps -lp 88046 > UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND > 1000 88046 89473 0 10 0 15400 1680 thrdeat D+ p0 0:00.52 > ./startup > oracle$ ps -lHp 88046 > UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.01 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.01 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > 1000 88046 89473 0 10 0 15400 1680 fsleep I+ p0 0:00.02 > ./startup > oracle$ doas egdb startup 88046 > GNU gdb (GDB) 9.2 > Copyright (C) 2020 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. > Type "show copying" and "show warranty" for details. > This GDB was configured as "sparc64-unknown-openbsd7.4". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > > For help, type "help". > Type "apropos word" to search for commands related to "word"... > Reading symbols from startup... > Attaching to program: /home/truk/startup, process 88046 > Reading symbols from /usr/lib/libc.so.97.1... > Reading symbols from /usr/libexec/ld.so... > [New thread 375080] > [New thread 623185] > [New thread 367953] > [New thread 232866] > [New thread 366574] > [New thread 493742] > [New thread 558951] > [New thread 258081] > [New thread 367867] > [New thread 245372] > [New thread 393196] > [New thread 157023] > [New thread 293058] > [New thread 447740] > [New thread 522513] > [New thread 410165] > [New thread 504404] > [New thread 574925] > [New thread 408929] > [New thread 322275] > [New thread 599412] > [New thread 595412] > [New thread 140208] > [New thread 130161] > [Switching to thread 169477] > 0x000000c9a31994c8 in futex () at {standard input}:5 > 5 {standard input}: No such file or directory. > (gdb) thread apply all bt > > Thread 25 (thread 130161): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef70c80) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef70c80, mutexp=0xc6db302430 > <threads+984>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302418 <threads+960>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5ae638) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 24 (thread 140208): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef71e30) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef71e30, mutexp=0xc6db302408 > <threads+944>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3023f0 <threads+920>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96d038) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 23 (thread 595412): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef17d80) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef17d80, mutexp=0xc6db3023e0 > <threads+904>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3023c8 <threads+880>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96c838) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 22 (thread 599412): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef16fd0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef16fd0, mutexp=0xc6db3023b8 > <threads+864>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3023a0 <threads+840>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96d838) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 21 (thread 322275): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef16750) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef16750, mutexp=0xc6db302390 > <threads+824>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302378 <threads+800>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc984059c38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 20 (thread 408929): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef85f70) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef85f70, mutexp=0xc6db302368 > <threads+784>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302350 <threads+760>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5afa38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > --Type <RET> for more, q to quit, c to continue without paging-- > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 19 (thread 574925): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef5a1c0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef5a1c0, mutexp=0xc6db302340 > <threads+744>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302328 <threads+720>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc9989b6438) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 18 (thread 504404): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef5b2b0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef5b2b0, mutexp=0xc6db302318 > <threads+704>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302300 <threads+680>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc9989b7038) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 17 (thread 410165): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef16980) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef16980, mutexp=0xc6db3022f0 > <threads+664>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3022d8 <threads+640>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5ae238) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 16 (thread 522513): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef858e0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef858e0, mutexp=0xc6db3022c8 > <threads+624>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3022b0 <threads+600>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc984058a38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 15 (thread 447740): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef70b60) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef70b60, mutexp=0xc6db3022a0 > <threads+584>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302288 <threads+560>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc9989b6038) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 14 (thread 293058): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef70ed0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef70ed0, mutexp=0xc6db302278 > <threads+544>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302260 <threads+520>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5af038) at > /usr/src/lib/librthread/rthread.c:96 > --Type <RET> for more, q to quit, c to continue without paging-- > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 13 (thread 157023): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef70fc0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef70fc0, mutexp=0xc6db302250 > <threads+504>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302238 <threads+480>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5af638) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 12 (thread 393196): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef17360) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef17360, mutexp=0xc6db302228 > <threads+464>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302210 <threads+440>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5ae038) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 11 (thread 245372): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef714c0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef714c0, mutexp=0xc6db302200 > <threads+424>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3021e8 <threads+400>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96c638) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 10 (thread 367867): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef5bec0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef5bec0, mutexp=0xc6db3021d8 > <threads+384>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3021c0 <threads+360>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5aea38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 9 (thread 258081): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef85890) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef85890, mutexp=0xc6db3021b0 > <threads+344>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302198 <threads+320>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96c238) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 8 (thread 558951): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef160e0) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef160e0, mutexp=0xc6db302188 > <threads+304>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302170 <threads+280>) at > startup.c:55 > --Type <RET> for more, q to quit, c to continue without paging-- > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96ca38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 7 (thread 493742): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef70250) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef70250, mutexp=0xc6db302160 > <threads+264>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302148 <threads+240>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96de38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 6 (thread 366574): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef85900) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef85900, mutexp=0xc6db302138 > <threads+224>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302120 <threads+200>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc9989b6c38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 5 (thread 232866): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef16230) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef16230, mutexp=0xc6db302110 > <threads+184>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3020f8 <threads+160>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5aee38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 4 (thread 367953): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef17b50) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef17b50, mutexp=0xc6db3020e8 > <threads+144>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3020d0 <threads+120>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc99e5aec38) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 3 (thread 623185): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef5b210) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef5b210, mutexp=0xc6db3020c0 > <threads+104>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db3020a8 <threads+80>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc8ee96c438) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 2 (thread 375080): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef5b820) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef5b820, mutexp=0xc6db302098 > <threads+64>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > --Type <RET> for more, q to quit, c to continue without paging-- > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302080 <threads+40>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc9989b6838) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > Thread 1 (thread 169477): > #0 0x000000c9a31994c8 in futex () at {standard input}:5 > #1 0x000000c9a318878c in _twait (abs=<optimized out>, clockid=<optimized > out>, val=<optimized out>, p=0xc96ef16c20) at > /usr/src/lib/libc/thread/synch.h:55 > #2 _rthread_cond_timedwait (cond=0xc96ef16c20, mutexp=0xc6db302070 > <threads+24>, abs=0x0) at /usr/src/lib/libc/thread/rthread_cond.c:106 > #3 0x000000c6db000a1c in thread_start (thread=0xc6db302058 <threads>) at > startup.c:55 > #4 0x000000c96b02eb70 in _rthread_start (v=0xc984058438) at > /usr/src/lib/librthread/rthread.c:96 > #5 0x000000c9a314df6c in __tfork_thread () at > /usr/src/lib/libc/arch/sparc64/sys/tfork_thread.S:58 > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > (gdb) > > -- :wq Claudio