X-Spam-Check-By: sourceware.org Date: Thu, 2 Feb 2006 15:54:52 -0500 From: Bob Rossi To: Eric Blake Cc: cygwin AT cygwin DOT com Subject: Re: mismatched dll Message-ID: <20060202205452.GA17485@brasko.net> Mail-Followup-To: Eric Blake , cygwin AT cygwin DOT com References: <020220062042 DOT 8442 DOT 43E26EBA0003DDE1000020FA22007507440A050E040D0C079D0A AT comcast DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <020220062042.8442.43E26EBA0003DDE1000020FA22007507440A050E040D0C079D0A@comcast.net> User-Agent: Mutt/1.5.9i X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Thu, Feb 02, 2006 at 08:42:34PM +0000, Eric Blake wrote: > > > No. There must be only ONE cygwin1.dll on your entire system. It > > > should be in your cygwin /bin directory. Period. > > > > Wow, that seems very inflexible. Is this a design decision? > > Yes. Cygwin DEPENDS on shared memory between processes, > in order to emulate POSIX semantics. If you have two different > .dlls trying to share the same memory, but with different > ideas of what the semantics of that memory are, you invariably > have problems. Cygwin prints out the error message you saw > rather than trying to be backwards compatible to all earlier > releases of the .dll in how this shared memory is used, because > it is just easier that way. OK. I understand the concept of having each application share a single .dll, this is to save space. Unix does this with shared objects. However, here's what I don't understand. Please explain to me why my thinking is fault. A program called p_v1 depends on v1.dll. Another program called p_v2 depends on v2.dll. For every p_v1 or p_v2 you start, only a single version of the associated dll is opened. The reason this design is nice is because you can have multiple versions of the .dll installed, and they will be shared between executables nicely. On Cygwin, for some reason you assert this condition is not true. I believe that what you are asserting is based in fact, and would really like to understand why. > > BTW, this worked before I upgraded cygwin. So it is at least possible if > > they are the same version? > > Possible? Yes. Wise? No. You are tempting fate - almost > as surely as you try this, you will forget to upgrade one of > the two copies, and be right back at this issue. Hence the > official stance of this list is to only ever have a SINGLE > cygwin1.dll on your machine. By moving the cygwin1.dll in the executable directory, things begin to work. However, I don't understand how it's assumed that the new cygwin1.dll acts the same as the one the executable was linked against. See what I mean? Another reason I'm asking is, I was trying to think of how I could package CGDB for people. Thanks for the great help, Bob Rossi -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/