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

Reply via email to