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

2008-02-22 Thread Brian Dessent
Noel Burton-Krahn wrote:

 The problem is there are several installable apps built on Cygwin,
 like EAC, ClamAV, and one I just found which is a
 Cygwin-on-a-thumbdrive.  The problem is they can't all coexist because
 they're distributed with different versions of the cygwin dlls.
 Making them work with the current cygwin means hand-copying cygwin
 dlls into application directories, and repeating that every time you
 upgrade. People used to give Windows a hard time for DLL hell!  I
 don't see the benefit of forcing users to hand-maintain cygwin dlls
 across multiple applications.

But we go to great pains to make the DLL binary backwards compatible
always.  So in this case all you have to do is maintain one copy in the
PATH and make sure it's the most recent, deleting all others.  This
should be a job for the installers of those 3PPs.

Besides, the shared memory region is only one of a whole bunch of IPC
objects that would need their own namespace if you wanted the true
ability to insulate two versions of Cygwin.  Fire up process explorer,
click on the handle search, and enter cygwin1S4 to get a rough list.  To
truly make this work you'd need to change shared_prefix.  And the
registry key for the mount table.  And probably other things too.

Brian


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

2008-02-22 Thread Igor Peshansky
Ugh, top-posting...  Reformatted.

On Thu, 21 Feb 2008, Noel Burton-Krahn wrote:

 On 2/21/08, Christopher Faylor
 [EMAIL PROTECTED] wrote:

http://cygwin.com/acronyms/#PCYMTNQREAIYR.  Thanks.

  On Thu, Feb 21, 2008 at 05:01:20PM -0800, Noel Burton-Krahn wrote:
   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  [EMAIL PROTECTED]
   
   * 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.

FYI, you get that automatically when you build a debug version of the DLL.

  Thanks for the patch but the whole reason for this detection and
  others in the DLL is to disallow multiple copies of cygwin1.dll from
  running at the same time.  This isn't a bug, it's a feature.  That's
  why we have the detection in the first place.
 
  As you can see from other checks in the dll, the shared memory region
  is just one of the things that are checked for.  If you need to have
  two copies of the DLL for debugging then there are ways to do that.
  But, in general, it is not a good idea to use two versions of the DLL
  unless you really know what you are doing, so we are not going to be
  making it trivially possible for everyone to do that.

 The problem is there are several installable apps built on Cygwin, like
 EAC, ClamAV, and one I just found which is a Cygwin-on-a-thumbdrive.
 The problem is they can't all coexist because they're distributed with
 different versions of the cygwin dlls. Making them work with the current
 cygwin means hand-copying cygwin dlls into application directories, and
 repeating that every time you upgrade. People used to give Windows a
 hard time for DLL hell!  I don't see the benefit of forcing users to
 hand-maintain cygwin dlls across multiple applications.

Don't copy DLLs -- that will only compound the problem.  Put c:\cygwin\bin
(or wherever you installed Cygwin to) in the system PATH, and let those
apps find the latest cygwin1.dll from there.

Besides, even if this patch were accepted (which it won't), you still
would not have fixed *those* versions of cygwin1.dll, so those apps would
still conflict with each other.

And this discussion is no longer pertinent to cygwin-patches.  If you wish
to continue, let's move to the main list, cygwin at cygwin dot com.
Igor
-- 
http://cs.nyu.edu/~pechtcha/
  |\  _,,,---,,_[EMAIL PROTECTED] | [EMAIL PROTECTED]
ZZZzz /,`.-'`'-.  ;-;;,_Igor Peshansky, Ph.D. (name changed!)
 |,4-  ) )-,_. ,\ (  `'-'   old name: Igor Pechtchanski
'---''(_/--'  `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

That which is hateful to you, do not do to your neighbor.  That is the whole
Torah; the rest is commentary.  Go and study it. -- Rabbi Hillel