C# 进程有时无法运行主方法中的任何内容,并卸载应用程序域

C# 进程有时无法运行主方法中的任何内容,并卸载应用程序域,c#,mono,gdb,clr,cil,C#,Mono,Gdb,Clr,Cil,我有两个C#应用程序,用户界面运行在Mono 4.0.3和OpenSUSE 13.1上。第一个应用程序启动第二个应用程序,然后等待它退出。有时(10次中有1次)第二个应用程序无法加载-进程将启动,但占用0%的处理器时间。如果我将Console.WriteLine放在Main方法的最开头,那么WriteLine永远不会发生 我启动流程非常简单: var psi = new ProcessStartInfo("mono", " --gc=boehm MyProgram.exe"); psi.Redi

我有两个C#应用程序,用户界面运行在Mono 4.0.3和OpenSUSE 13.1上。第一个应用程序启动第二个应用程序,然后等待它退出。有时(10次中有1次)第二个应用程序无法加载-进程将启动,但占用0%的处理器时间。如果我将Console.WriteLine放在Main方法的最开头,那么WriteLine永远不会发生

我启动流程非常简单:

var psi = new ProcessStartInfo("mono", " --gc=boehm MyProgram.exe");
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.UseShellExecute = false;
var process = Process.Start(psi);
按照的步骤,gdb的mono_回溯输出为:

#0  0x00007f4dbc966c1b in sigsuspend () from /lib64/libc.so.6
#1  0x0000000000615941 in GC_suspend_handler ()
#2  <signal handler called>
#3  0x00007f4dbcf030ad in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#4  0x00000000005df2d3 in _wapi_handle_timedwait_signal_handle ()
#5  0x00000000005f26fb in wapi_WaitForSingleObjectEx ()
#6  0x00000000005a9062 in mono_domain_try_unload ()
#7  0x00000000005a9154 in mono_domain_unload ()
#8 0x401931d2 in  (wrapper managed-to-native) System.AppDomain:InternalUnload (int) + 0x52 (0x40193180 0x401931fe) [0x7f4dbd9c0d48 - MyProgram.exe]
#9  0x00007f4daa37d370 in ?? ()
#10 0x00007f4daa37d370 in ?? ()
#11 0x00007f4daa37d370 in ?? ()
#12 0x0000000001f17068 in ?? ()
#13 0x00007f4daa359af0 in ?? ()
#14 0x0000000001abb1d0 in ?? ()
#15 0x40192dd4 in <0x40192dd4 - JIT trampoline for System.AppDomain:InternalUnload (int)>
#16 0x00007fff4c7a9fe0 in ?? ()
#17 0x00007fff4c7a9ed0 in ?? ()
#18 0x40192da8 in  System.AppDomain:Unload (System.AppDomain) + 0x28 (0x40192d80 0x40192dd4) [0x7f4dbd9c0d48 - MyProgram.exe]

我在针对mono 4.0.3的测试自动化(包括nunit和我自己的流程)中看到挂起和一些错误,3.12.1中的挂起和错误在升级到mono 4.0.4.1后得到了解决


我在4.0.4的发行说明中没有看到任何与此直接相关的内容。但肯定解决了我遇到的这些问题。

您提供的堆栈跟踪本身毫无意义。您需要显示
线程apply all where
的输出,谢谢,我已经添加了输出。
Thread 10 (Thread 0x7f4dbc0f7700 (LWP 7994)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 9 (Thread 0x7f4dbb8f6700 (LWP 7995)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 8 (Thread 0x7f4dbb0f5700 (LWP 7996)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 7 (Thread 0x7f4dba8f4700 (LWP 7997)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7f4dba0f3700 (LWP 7998)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7f4db98f2700 (LWP 7999)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f4db90f1700 (LWP 8000)):
#0  0x00007f4dbcf030af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000000000615823 in GC_wait_marker ()
#2  0x000000000060dad5 in GC_help_marker ()
#3  0x0000000000613f87 in GC_mark_thread ()
#4  0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#5  0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f4db832b700 (LWP 8001)):
#0  0x00007f4dbc966c1b in sigsuspend () from /lib64/libc.so.6
#1  0x0000000000615941 in GC_suspend_handler ()
#2  <signal handler called>
#3  0x00007f4dbcf0589a in __lll_lock_wait () from /lib64/libpthread.so.0
#4  0x00007f4dbcf014d7 in _L_lock_913 () from /lib64/libpthread.so.0
#5  0x00007f4dbcf01300 in pthread_mutex_lock () from /lib64/libpthread.so.0
#6  0x0000000000615235 in GC_pthread_join ()
#7  0x0000000000592b67 in mono_threads_join_threads ()
#8  0x00000000005ad192 in finalizer_thread ()
#9  0x0000000000590af4 in start_wrapper ()
#10 0x0000000000604906 in inner_start_thread ()
#11 0x0000000000615456 in GC_start_routine ()
#12 0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#13 0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f4da99c0700 (LWP 8004)):
#0  0x00007f4dbcf050f0 in sem_wait () from /lib64/libpthread.so.0
#1  0x0000000000615ccc in GC_stop_world ()
#2  0x0000000000606b05 in GC_stopped_mark ()
#3  0x0000000000607407 in GC_try_to_collect_inner ()
#4  0x0000000000607626 in GC_try_to_collect ()
#5  0x00000000006076ae in GC_gcollect ()
#6  0x00000000005ac7ac in mono_domain_finalize ()
#7  0x00000000005a6874 in unload_thread_main ()
#8  0x0000000000604906 in inner_start_thread ()
#9  0x0000000000615456 in GC_start_routine ()
#10 0x00007f4dbceff0db in start_thread () from /lib64/libpthread.so.0
#11 0x00007f4dbca1890d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f4dbda2b740 (LWP 7991)):
#0  0x00007f4dbc966c1b in sigsuspend () from /lib64/libc.so.6
#1  0x0000000000615941 in GC_suspend_handler ()
#2  <signal handler called>
#3  0x00007f4dbcf030ad in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#4  0x00000000005df2d3 in _wapi_handle_timedwait_signal_handle ()
#5  0x00000000005f26fb in wapi_WaitForSingleObjectEx ()
#6  0x00000000005a9062 in mono_domain_try_unload ()
#7  0x00000000005a9154 in mono_domain_unload ()
#8  0x00000000401931d2 in ?? ()
#9  0x00007f4daa37d370 in ?? ()
#10 0x00007f4daa37d370 in ?? ()
#11 0x00007f4daa37d370 in ?? ()
#12 0x0000000001f17068 in ?? ()
#13 0x00007f4daa359af0 in ?? ()
#14 0x0000000001abb1d0 in ?? ()
#15 0x0000000040192dd4 in ?? ()
#16 0x00007fff4c7a9fe0 in ?? ()
#17 0x00007fff4c7a9ed0 in ?? ()
#18 0x0000000040192da8 in ?? ()
#19 0x0000000000000000 in ?? ()