www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2013/08/22/11:22:39

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:content-type:content-transfer-encoding; q=dns; s=default; b=nGM
LPR8deu15Pe2AdEkxbx8quh+dkbq8rt68QcyDCFXOYEj7RvEPF32gqz9lWkWGfYY
eLix4WX6K6TbepBdK9mVGmby117a0IgTm6fla24cA0/qy61HV8Nmp1NWLh9RLJYx
HKy9Ptv9pI76rS+nkdiKkqQ364UwLSJG+BR9oc5w=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:content-type:content-transfer-encoding; s=default; bh=bFWzn4I37
VgfLm+J9vNLI7HXBic=; b=iOtCGrIEafpt9+MHdxwDSY1OPtAvk3iuCFjAEHeNr
FTHZFn4h8lhST5RnYPLPFaQ78bmcURS/uq2FSxB9U0MJYmEL7g8fUNfjLDClY1he
TmGHxbDOjeUh9BxhKPA+LPNigHVSq7fqQc7jr0sDlyVpm3+1qe4l3oonhAKZj7Fd
uk=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Spam-SWARE-Status: No, score=-3.9 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2
Message-ID: <52162CA9.9080002@etr-usa.com>
Date: Thu, 22 Aug 2013 09:22:17 -0600
From: Warren Young <warren AT etr-usa DOT com>
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
MIME-Version: 1.0
To: Cygwin-L <cygwin AT cygwin DOT com>
Subject: Why are the 32- and 64-bit cygwin1.dlls incompatible?

If you try something like this from a Cygwin 64 install:

     $ /cygdrive/c/cygwin32/bin/ls

you get an error like this:

     3 [main] ls (8168) C:\cygwin32\bin\ls.exe: *** fatal error -
     cygheap base mismatch detected - 0x0/0x612A0950.

It goes on to explain that this is due to trying to load an incompatible 
cygwin1.dll.

My best guess is that this happens because the standard Windows DLL 
search logic[1] says "oh, I already have a CYGWIN1 module loaded, I will 
use that one."  And boom.

Yet, if that were truly what's going on, DLL redirection[2] should fix 
it.  From Cygwin 64 again:

     $ touch /cygdrive/c/cygwin32/bin/ls.exe.local
     $ /cygdrive/c/cygwin32/bin/ls
     same complaint as before

Another oddity is that the inverse test succeeds.  From Cygwin 32:

     $ /cygdrive/c/cygwin64/bin/ls
     all   my   base
     $

In another forum[3], Yaakov told me that Windows is supposed to be 
taking CPU bitness into account here, which should be another way for it 
to work without special help.  I don't see mention of such a rule in 
[1], however.

What is really going on here?

Understand, I'm not asking because I want it fixed.  I mean, it'd be 
*nice* if it were fixed, but I'm more interested in knowing why it is 
the way it is.



[1] http://goo.gl/j2g1EL
[2] http://goo.gl/IVI6CE
[3] http://goo.gl/2HcAZk

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019