I'm running mono 2.10.8.1 on CentOS 6.3 and running a mono-service application.
It seems to run fine for a while, but then after a few hours appears hung. No
CPU is in use, but my application doesn't respond to HTTP requests anymore,
isn't logging anything, nothing. I used gdb to get a backtrace when it's hung,
and it appears that every thread is stuck in sigsuspend(). Most seem to be
following a _GC_suspend_handler, like here is an example:
Thread 13 (Thread 0x7f4c286a7700 (LWP 1395)):
#0 0x00007f4c2f1abc54 in sigsuspend () from /lib64/libc.so.6
#1 0x00000000005f2efe in _GC_suspend_handler (sig=30) at
pthread_stop_world.c:186
#2 0x00000000005f2f3d in GC_suspend_handler (sig=30) at
pthread_stop_world.c:211
#3 <signal handler called>
#4 0x00007f4c2f5177bb in pthread_cond_timedwait@@GLIBC_2.3.2 () from
/lib64/libpthread.so.0
#5 0x00000000005aeeed in _wapi_handle_timedwait_signal_handle (handle=0x42b,
timeout=0x7f4c286a6810, alertable=1, poll=<value optimized out>) at
handles.c:1653
#6 0x00000000005a6a11 in WaitForSingleObjectEx (handle=0x42b, timeout=9999,
alertable=1) at wait.c:205
#7 0x00000000005995ab in
ves_icall_System_Threading_WaitHandle_WaitOne_internal (this=<value optimized
out>, handle=0x42b, ms=9999, exitContext=<value optimized out>) at
threads.c:1665
#8 0x00000000413d31f8 in ?? ()
#9 0x00007f4c10000c40 in ?? ()
#10 0x00007fff1d77ba37 in clock_gettime ()
#11 0x00000000413d2ddb in ?? ()
#12 0x000000000000270f in ?? ()
#13 0x000000000000270f in ?? ()
#14 0x00000000413d1340 in ?? ()
#15 0x00000000413d137b in ?? ()
#16 0x0000000000000000 in ?? ()
After I stop and restart the mono-service, the application responds as normal,
and most of the threads are in pthread_cond_wait, but NONE of them are in
sigsuspend():
Thread 13 (Thread 0x7fabf2954700 (LWP 7493)):
#0 0x00007fabf4af643c in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib64/libpthread.so.0
#1 0x00000000005e455f in GC_wait_marker () at pthread_support.c:1863
#2 0x00000000005d55bd in GC_help_marker (my_mark_no=105) at mark.c:1116
#3 0x00000000005e32e0 in GC_mark_thread (id=0x3) at pthread_support.c:552
#4 0x00007fabf4af2851 in start_thread () from /lib64/libpthread.so.0
#5 0x00007fabf484090d in clone () from /lib64/libc.so.6
Any idea why all the threads would go into sigsuspend()? I'm not using sgen,
by the way. I can try if anyone expects that to be of any help.
If you need a full backtrace of all the threads, let me know.
Thanks for your help.
-Dave
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list