Fix the race condition in mutex test using another manual reset event (dotnet/coreclr...
authorAhson Ahmed Khan <ahsonkhan@users.noreply.github.com>
Fri, 11 Aug 2017 02:56:03 +0000 (19:56 -0700)
committerGitHub <noreply@github.com>
Fri, 11 Aug 2017 02:56:03 +0000 (19:56 -0700)
* Fix the race condition by using a manual reset event instead of gc.keepalive

* Addressing PR comment

Commit migrated from https://github.com/dotnet/coreclr/commit/a1dce4fced328c9687293f6d80e1e0cea8b90ca4

src/coreclr/tests/src/baseservices/threading/mutex/openexisting/openmutexpos4.cs

index cf907d3..f1a4613 100644 (file)
@@ -13,6 +13,7 @@ public class Test
     const string mutexName = "MySharedMutex";
     static ManualResetEvent manualEvent = new ManualResetEvent(false);
     static ManualResetEvent exitEvent = new ManualResetEvent(false);
+    static ManualResetEvent reuseBeforeReleaseEvent = new ManualResetEvent(false);
     int success = 100;
 
 
@@ -26,10 +27,10 @@ public class Test
         Console.WriteLine("Mutex created");
         
         manualEvent.Set();
+        reuseBeforeReleaseEvent.WaitOne();
         mutex.ReleaseMutex();
         
         exitEvent.WaitOne();
-        GC.KeepAlive(mutex);
     }
 
     public void ReuseMutexThread()
@@ -40,6 +41,7 @@ public class Test
 
         Mutex mutex = new Mutex(true, mutexName, out exists);
         
+        reuseBeforeReleaseEvent.Set();
         if (exists)
         {
             Console.WriteLine("Error, created new mutex!");