From: Sam S. <sd...@gn...> - 2008-11-20 20:32:49
|
Vladimir, Vladimir Tzankov wrote: >> while clisp hangs with loadavg=1: >> >> (y-or-n-p-timeout 1 t "y or n") >> y or n (y/n) _ >> >> strace -p PID results in an endless stream of: >> >> sched_yield() = 0 >> ................................ >> >> and ltrace is just a bit more informative: >> >> sched_yield(0x19a6402c, 1, 1, 0x19a6402c, 668372) = 0 > > Can you post a stack trace of the threads? [1]> (y-or-n-p-timeout 1 t "y or n") y or n (y/n) Program received signal SIGTSTP, Stopped (user). [Switching to Thread 46912498368544 (LWP 3159)] 0x00000033c82b5f97 in sched_yield () from /lib64/libc.so.6 (gdb) where #0 0x00000033c82b5f97 in sched_yield () from /lib64/libc.so.6 #1 0x0000000000408142 in suspend_thread (thr=0x1661a010, lock_heap=false) at ../src/spvw_global.d:631 #2 0x000000000042f62b in signal_handler_thread (arg=0x0) at ../src/spvw.d:4417 #3 0x0000000000428547 in main (argc=11, argv=0x7fffbc0f6de8) at ../src/spvw.d:3919 (gdb) 630 while (!spinlock_tryacquire(&thr->_gc_suspend_ack)) 631 xthread_yield(); 632 } aha - here is the spinlock, here is why loadavg is 100%! |