[PATCH] fix startup race in shared.cc

Usman Muzaffar foo@muzaffar.org
Wed May 4 00:17:00 GMT 2005


Still seeing incorrect "version mismatch" messages for processes
starting simultaneously on dual-processor systems; I believe this
patch to the recent locking work in shared.cc fixes the "user shared
memory version" errors I'm seeing.

Thanks,
-Usman



2005-05-03  Usman Muzaffar <foo@muzaffar.org>

* shared.cc (user_shared_initialize): Check for mismatched user
  shared memory version with result from InterlockedExchange to
  avoid startup race.


Index: cygwin/shared.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/shared.cc,v
retrieving revision 1.94
diff -u -p -r1.94 shared.cc
--- cygwin/shared.cc 30 Apr 2005 17:07:05 -0000 1.94
+++ cygwin/shared.cc 3 May 2005 23:20:02 -0000
@@ -199,8 +199,8 @@ user_shared_initialize (bool reinit)
       /* Initialize the queue of deleted files.  */
       user_shared->delqueue.init ();
     }
-  else if (user_shared->version != USER_VERSION_MAGIC)
-    multiple_cygwin_problem ("user shared memory version", user_shared->version, USER_VERSION_MAGIC);
+  else if (sversion != USER_VERSION_MAGIC)
+    multiple_cygwin_problem ("user shared memory version", sversion, USER_VERSION_MAGIC);
   else if (user_shared->cb != sizeof (*user_shared))
     multiple_cygwin_problem ("user shared memory size", user_shared->cb, sizeof (*user_shared));
   else





More information about the Cygwin-patches mailing list