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: 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 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 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 Subject: Why are the 32- and 64-bit cygwin1.dlls incompatible? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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