<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div>Hi all,</div>
<div><br>
</div>
<div>Quick background: We’re running mono on an HPC platform (SGI ICE-X / SUSE Enterprise Linux 11) with a Lustre filesystem.  For several months, I’ve noticed random hangs with our application.  In a given batch job, we run 500+ instances of mono in parallel
 (no interprocess communication).   I haven’t been able to reliably reproduce the issue which leads me to believe it’s a timing issue, and more specifically, I have reason to believe it may be an issue with the interaction of mono and the filesystem.  Being
 a clustered file-system, the load on the backing stores can vary due to other users.</div>
<div><br>
</div>
<div>When I notice that my job hasn’t finished in a reasonable amount of time,  I log into the compute node and do a  “ ps -efL | grep mono “ which reveals:</div>
<div><br>
</div>
<div>
<div>george  16728 16575 16728  6    3 16:13 ?        00:03:58 mono --runtime=v4.0.30319 /app/MyConsole.exe </div>
<div>ggeorge  16728 16575 16768  0    3 16:13 ?        00:00:02 mono --runtime=v4.0.30319 /app/MyConsole.exe</div>
<div>ggeorge  16728 16575 16815  0    3 16:13 ?        00:00:04 mono --runtime=v4.0.30319 /app/MyConsole.exe</div>
</div>
<div><br>
</div>
<div>16728 is the top proc which spawns 16768 and 16815 (main, gc and maybe finalizer thread?).</div>
<div><br>
</div>
<div>Attaching to each of these 3 pid’s with gdb and doing a backtrace reveals the traces below.  </div>
<div><br>
</div>
<div>1.  Is it possible this is a GC hang?</div>
<div><br>
</div>
<div>2.  Is it possible this is a race condition that has anything to do with the filesystem?</div>
<div><br>
</div>
<div>3.  Any idea how this sequence could occur?  If there’s a way to gather more information, please let me know.</div>
<div><br>
</div>
<div>
<div>The reason for the file system suspicion is my app writes several small files, times the number of mono instances (500+).  It only happens randomly, but seems to be more frequent the more mono instances I run.</div>
<div><br>
</div>
<div>Any help is HIGHLY appreciated.</div>
<div><br>
</div>
<div>PID 16728</div>
<div>———</div>
<div>(gdb) bt</div>
<div>#0  0x00007fffecccd324 in __lll_lock_wait () from /lib64/libpthread.so.0</div>
<div>#1  0x00007fffeccc8684 in _L_lock_1091 () from /lib64/libpthread.so.0</div>
<div>#2  0x00007fffeccc84f6 in pthread_mutex_lock () from /lib64/libpthread.so.0</div>
<div>#3  0x00007fffed8f6dcc in _dl_open () from /lib64/ld-linux-x86-64.so.2</div>
<div>#4  0x00007fffec842530 in do_dlopen () from /lib64/libc.so.6</div>
<div>#5  0x00007fffed8f2e86 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2</div>
<div>#6  0x00007fffec8425e5 in dlerror_run () from /lib64/libc.so.6</div>
<div>#7  0x00007fffec8426d7 in __libc_dlopen_mode () from /lib64/libc.so.6</div>
<div>#8  0x00007fffec81d2e5 in init () from /lib64/libc.so.6</div>
<div>#9  0x00007fffecccbd03 in pthread_once () from /lib64/libpthread.so.0</div>
<div>#10 0x00007fffec81d43c in backtrace () from /lib64/libc.so.6</div>
<div>#11 0x00000000004ac025 in mono_handle_native_sigsegv (signal=<optimized out>, ctx=<optimized out>, info=<optimized out>)</div>
<div>    at mini-exceptions.c:2309</div>
<div>#12 <signal handler called></div>
<div>#13 0x00007fffec75e875 in raise () from /lib64/libc.so.6</div>
<div>#14 0x00007fffec75fe51 in abort () from /lib64/libc.so.6</div>
<div>#15 0x000000000064528a in monoeg_log_default_handler (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, message=</div>
<div>    0x1ac7660 "suspend_thread suspend took 200 ms, which is more than the allowed 200 ms", unused_data=0x0) at goutput.c:233</div>
<div>#16 0x0000000000645077 in monoeg_g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, format=</div>
<div>    0x7015d8 "suspend_thread suspend took %d ms, which is more than the allowed %d ms", args=0x7fffffffce58) at goutput.c:113</div>
<div>#17 0x000000000064512d in monoeg_g_log (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, format=</div>
<div>    0x7015d8 "suspend_thread suspend took %d ms, which is more than the allowed %d ms") at goutput.c:123</div>
<div>#18 0x000000000063a13f in mono_threads_wait_pending_operations () at mono-threads.c:238</div>
<div>#19 0x000000000063a8cd in suspend_sync (interrupt_kernel=1, tid=140737159329536) at mono-threads.c:877</div>
<div>#20 suspend_sync_nolock (interrupt_kernel=1, id=140737159329536) at mono-threads.c:892</div>
<div>#21 mono_thread_info_safe_suspend_and_run (id=140737159329536, interrupt_kernel=interrupt_kernel@entry=1, callback=callback@entry=</div>
<div>    0x58d5c0 <abort_thread_critical>, user_data=user_data@entry=0x7fffffffd3e0) at mono-threads.c:935</div>
<div>#22 0x0000000000591a86 in abort_thread_internal (thread=thread@entry=0x7fffec6e0230, install_async_abort=install_async_abort@entry=1, </div>
<div>    can_raise_exception=1) at threads.c:4728</div>
<div>#23 0x0000000000591b29 in mono_thread_internal_stop (thread=0x7fffec6e0230) at threads.c:2385</div>
<div>---Type <return> to continue, or q <return> to quit--- </div>
<div>#24 0x00000000005b123e in mono_gc_cleanup () at gc.c:842</div>
<div>#25 0x00000000005aab8e in mono_runtime_cleanup (domain=domain@entry=0x9d9e00) at appdomain.c:356</div>
<div>#26 0x0000000000426c8b in mini_cleanup (domain=0x9d9e00) at mini-runtime.c:4017</div>
<div>#27 0x000000000047fac6 in mono_main (argc=11, argv=<optimized out>) at driver.c:2115</div>
<div>#28 0x0000000000424c68 in mono_main_with_options (argv=0x7fffffffd698, argc=11) at main.c:20</div>
<div>#29 main (argc=<optimized out>, argv=<optimized out>) at main.c:53</div>
<div><br>
</div>
<div>Thread 16768</div>
<div>———</div>
<div>(gdb) bt</div>
<div>#0  0x00007fffeccca66c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0</div>
<div>#1  0x000000000060c873 in mono_os_cond_wait (mutex=0x97e640 <lock>, cond=0x97e600 <work_cond>) at ../../mono/utils/mono-os-mutex.h:105</div>
<div>#2  thread_func (thread_data=0x0) at sgen-thread-pool.c:118</div>
<div>#3  0x00007fffeccc6806 in start_thread () from /lib64/libpthread.so.0</div>
<div>#4  0x00007fffec80a9bd in clone () from /lib64/libc.so.6</div>
<div>#5  0x0000000000000000 in ?? ()</div>
<div>(gdb) </div>
<div><br>
</div>
<div><br>
</div>
<div>Thread 16815</div>
<div>————</div>
<div>Thread #0  0x00007fffec75ec8b in sigsuspend () from /lib64/libc.so.6</div>
<div>#1  0x000000000063cda6 in suspend_signal_handler (_dummy=<optimized out>, info=<optimized out>, context=0x7fffec633dc0)</div>
<div>    at mono-threads-posix-signals.c:209</div>
<div>#2  <signal handler called></div>
<div>#3  0x00007fffed8faf97 in open64 () from /lib64/ld-linux-x86-64.so.2</div>
<div>#4  0x00007fffed8ea82d in open_verify () from /lib64/ld-linux-x86-64.so.2</div>
<div>#5  0x00007fffed8eade0 in open_path () from /lib64/ld-linux-x86-64.so.2</div>
<div>#6  0x00007fffed8ece7c in _dl_map_object () from /lib64/ld-linux-x86-64.so.2</div>
<div>#7  0x00007fffed8f7400 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2</div>
<div>#8  0x00007fffed8f2e86 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2</div>
<div>#9  0x00007fffed8f6e3b in _dl_open () from /lib64/ld-linux-x86-64.so.2</div>
<div>#10 0x00007fffecedcf9b in dlopen_doit () from /lib64/libdl.so.2</div>
<div>#11 0x00007fffed8f2e86 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2</div>
<div>#12 0x00007fffecedd33c in _dlerror_run () from /lib64/libdl.so.2</div>
<div>#13 0x00007fffecedcf01 in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2</div>
<div>#14 0x0000000000630b79 in mono_dl_open (name=name@entry=0x1c02790 "libSystem.Data", flags=flags@entry=1, error_msg=error_msg@entry=</div>
<div>    0x7fffec634e80) at mono-dl.c:150</div>
<div>#15 0x000000000054b9f0 in cached_module_load (name=name@entry=0x1c02790 "libSystem.Data", err=err@entry=0x7fffec634e80, flags=1)</div>
<div>    at loader.c:1398</div>
</div>
<div><br>
</div>
</body>
</html>