I found problem in Mono in named mutex I have repro program: using System; using System.Threading;
namespace Crasher { internal class Program { public static void Main (string[] args) { var a = ""; for (var i = 0; i < 100; i++) { new Thread(Crasher).Start(); } Console.WriteLine(a); Console.ReadLine(); } private static void Crasher(){ var rnd = new Random(); while (true) { Thread.Sleep(rnd.Next(100, 10000)); using (var mutex = new Mutex(false, "Global\\TEST")) { var owner = false; try { owner = mutex.WaitOne(TimeSpan.FromMinutes(1)); } finally { if (owner) { mutex.ReleaseMutex(); } } Console.WriteLine ("PING"); } Thread.Sleep(rnd.Next(100, 10000)); } } } } It program crached mono after few seconds. I see namedmutex_create and namedmutex_release use different locks. First time I found it problem when run Nuget client on mono. I verify repro on mono 4.2, 4.4, and master. Anybody can help me resolve this issue? On 4.4.0 native crash: namedmutex_create: error creating mutex handle PING PING PING PING PING PING PING PING PING PING PING PING PING PING _wapi_handle_unref_full: Attempting to unref unused handle 0x4e0 PING PING namedmutex_create: error creating mutex handle PING PING PING PING PING PING _wapi_handle_ref: Attempting to ref unused handle 0x4e3 * Assertion at ../../mono/utils/mono-os-mutex.h:135, condition `res != EINVAL' not met Stacktrace: at <unknown> <0xffffffff> at (wrapper managed-to-native) System.Threading.WaitHandle.WaitOne_internal (System.Threading.WaitHandle,intptr,int,bool) <0x00073> at System.Threading.WaitHandle.WaitOne (System.TimeSpan,bool) <0x0009b> at System.Threading.WaitHandle.WaitOne (System.TimeSpan) <0x0001d> at Crasher.Program.Crasher () <0x000f0> at System.Threading.ThreadHelper.ThreadStart_Context (object) <0x0009a> at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) <0x001c6> at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) <0x00020> at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object) <0x00059> at System.Threading.ThreadHelper.ThreadStart () <0x0002e> at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) <0x000e0> Native stacktrace: 0 mono 0x0000000103f9b0ca mono_handle_native_sigsegv + 271 1 libsystem_platform.dylib 0x00007fff854c252a _sigtramp + 26 2 mono 0x00000001042036a4 tmp_dir + 5316 3 libsystem_c.dylib 0x00007fff935536e7 abort + 129 4 mono 0x000000010410d1f0 monoeg_g_log + 0 5 mono 0x000000010410d175 monoeg_g_logv + 83 6 mono 0x000000010410d31a monoeg_assertion_message + 143 7 mono 0x00000001040e453d _wapi_handle_timedwait_signal_handle + 1153 8 mono 0x00000001040f4aec wapi_WaitForSingleObjectEx + 606 9 mono 0x000000010406c01c mono_wait_uninterrupted + 130 10 mono 0x000000010406c1ff ves_icall_System_Threading_WaitHandle_WaitOne_internal + 73 11 ??? 0x0000000108130b54 0x0 + 4430433108 12 mscorlib.dll.dylib 0x00000001062ed7ae System_Threading_WaitHandle_WaitOne_System_TimeSpan + 30 13 mscorlib.dll.dylib 0x0000000106140e5b System_Threading_ThreadHelper_ThreadStart_Context_object + 155 14 mscorlib.dll.dylib 0x000000010613f331 System_Threading_ExecutionContext_Run_System_Threading_ExecutionContext_System_Threading_ContextCallback_object_bool + 33 15 mono 0x0000000103f04876 mono_jit_runtime_invoke + 1578 16 mono 0x0000000104090c23 mono_runtime_invoke + 130 17 mono 0x0000000104070409 start_wrapper + 424 18 mono 0x0000000104106cb1 inner_start_thread + 305 19 libsystem_pthread.dylib 0x00007fff989c399d _pthread_body + 131 20 libsystem_pthread.dylib 0x00007fff989c391a _pthread_body + 0 21 libsystem_pthread.dylib 0x00007fff989c1351 thread_start + 13 On master UnhandlerException: namedmutex_create: error creating mutex handle PING PING PING PING PING _wapi_handle_unref_full: Attempting to unref unused handle 0x4eb PING PING PING _wapi_handle_unref_full: Attempting to unref unused handle 0x4ec PING PING PING PING PING PING PING PING _wapi_handle_unref_full: Attempting to unref unused handle 0x4ee PING PING PING PING PING PING PING PING PING PING PING PING PING _wapi_handle_unref_full: Attempting to unref unused handle 0x4f1 PING PING PING PING PING PING PING Unhandled Exception: System.ApplicationException: Mutex is not owned at System.Threading.Mutex.ReleaseMutex () <0x10e769ef0 + 0x00043> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.Threading.Mutex:ReleaseMutex () at Crasher.Program.Crasher () <0x10cfdfc80 + 0x00129> in <filename unknown>:0 at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) <0x10e5fb710 + 0x00096> in <filename unknown>:0 at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) <0x10e5f93b0 + 0x001c6> in <filename unknown>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) <0x10e5f9380 + 0x00020> in <filename unknown>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) <0x10e5f92d0 + 0x00059> in <filename unknown>:0 at System.Threading.ThreadHelper.ThreadStart () <0x10e5fb8c0 + 0x0002e> in <filename unknown>:0 _wapi_handle_unref_full: Attempting to unref unused handle 0x4f1 [ERROR] FATAL UNHANDLED EXCEPTION: Nested exception trying to figure out what went wrong _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list