This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: avoid system shared memory version mismatch detected by versioning shared memory name


This is a patch to avoid the "system shared memory version mismatch
detected" problem when two applications use different versions of
Cygwin.  My solution is to append the Cygwin version number to the
name of the shared memory segment, so only Cygwin with the same
version share a memory space.

ChangeLog
2008-02-21  Noel Burton-Krahn  <noel@burton-krahn.com>

    * shared.cc (shared_name): always add USER_VERSION_MAGIC to the
    shared memory space name so multiple versions of Cygwin keep their
     own shared memory space.  No more "system shared memory version
    mismatch detected"  errors.



Here's how I tested it:

1. save the attached patch

cygwin-snapshot-20080219-1-versioned-shared-memory.patch

2. patch and build:

 wget http://cygwin.com/snapshots/cygwin-src-20080219.tar.bz2
tar jxf cygwin-src-20080219.tar.bz2
 cd cygwin-snapshot-20080219-1
patch -p1 < ../cygwin-snapshot-20080219-1-versioned-shared-memory.patch
 ./configure
make

3. replace cygwin1.dll with the new one

# the compiled cygwin1.dll will not conflict with other cygwins at
# other versions. You can copy it over the cygwin1.dll in one of your
# conflicting applications
  #
cp ./i686-pc-cygwin/winsup/cygwin/new-cygwin1.dll ./cygwin1.dll

It worked for me.  Let me know how it goes for you.

By the way, there's another gotcha here.  Cygwin keeps its mount
points in the registry, so your mount.bat script will overwrite
existing cygwin mount points.  To clean up I had to run the cygwin
setup again.

~Noel

Attachment: cygwin-snapshot-20080219-1-versioned-shared-memory.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]