delorie.com/archives/browse.cgi | search |
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:date:from:to:subject:message-id:reply-to | |
:references:mime-version:content-type:in-reply-to; q=dns; s= | |
default; b=akX0ovG9tjUJG/zm6Q+RTF9R7kE4Akhx4DBnKQhdB5qc32byEZ/pJ | |
6aYN/Xln21g4P6C/v9aXywq0ARbys3/Z8+rGQN6iY1SN0aiwUPEzBU/QJOsoH9sh | |
zOSu6p3F46rJ9tWW+Cw7INFvHG7Wejvhrt2+tGp3Bzi+W1fAgAwSj4= | |
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:date:from:to:subject:message-id:reply-to | |
:references:mime-version:content-type:in-reply-to; s=default; | |
bh=XicXkvs7nTPLC3GIzAKQxgmBb4s=; b=rTwOoVWFje3mmAUY07ePGGioqytz | |
cRaqAZiLAjlLbOAd3sRAWDrCSOZ7FdxeW892OUxL9kfFoop3fx5k6fGjQYx1cmYD | |
dqD01rdjrmuzM1flzly5egqXSTAxmz5jUwgXFYi2tMr93mq8HbLv3pHS3UBngMdx | |
cyc3UbwCpxKQraY= | |
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=-4.5 required=5.0 tests=AWL,BAYES_00,KHOP_PGP_SIGNED autolearn=ham version=3.3.2 |
Date: | Thu, 22 Aug 2013 19:14:19 +0200 |
From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: Why are the 32- and 64-bit cygwin1.dlls incompatible? |
Message-ID: | <20130822171419.GQ2562@calimero.vinschen.de> |
Reply-To: | cygwin AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <52162CA9 DOT 9080002 AT etr-usa DOT com> |
MIME-Version: | 1.0 |
In-Reply-To: | <52162CA9.9080002@etr-usa.com> |
User-Agent: | Mutt/1.5.21 (2010-09-15) |
X-Virus-Found: | No |
--Pes7OZCOzfZhFQfq Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Aug 22 09:22, Warren Young wrote: > If you try something like this from a Cygwin 64 install: >=20 > $ /cygdrive/c/cygwin32/bin/ls >=20 > you get an error like this: >=20 > 3 [main] ls (8168) C:\cygwin32\bin\ls.exe: *** fatal error - > cygheap base mismatch detected - 0x0/0x612A0950. >=20 > It goes on to explain that this is due to trying to load an > incompatible cygwin1.dll. >=20 > 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. >=20 > Yet, if that were truly what's going on, DLL redirection[2] should > fix it. From Cygwin 64 again: >=20 > $ touch /cygdrive/c/cygwin32/bin/ls.exe.local > $ /cygdrive/c/cygwin32/bin/ls > same complaint as before >=20 > Another oddity is that the inverse test succeeds. From Cygwin 32: >=20 > $ /cygdrive/c/cygwin64/bin/ls > all my base > $ >=20 > 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. >=20 > What is really going on here? >=20 > 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. When execveing a Cygwin process, a lot of data is submitted via shared memory, via data copying, and via a special parameter to the CreateProcess call with the mysterious name "lpReserved2". One problem is the differences in basic datatypes, which results in incompatible datastructures between 32 and 64 bit. While this could be worked around, this doesn't help for the shared memory stuff, which depends on the installation path of the cygwin DLL. The Cygwin DLL in C:\cygwin1 would use a different name for the shared mem regions than the Cygwin DLL installed into C:\cygwin2, independent of the target architecture. This is by design since Cygwin 1.7. One effect: No tty sharing. Therefore, interaction between the 32 and 64 bit DLLs is not supported. This was an early design goal when we discussed the 64 bit DLL on the cygwin-developers list two years ago, but I was almost the only one favoring this approach, AFAIR. It also turned out that the complexity of this approach was pretty high, so we discussed it again early 2013 and I dropped it, otherwise we would very likely not have a 64 bit distro at this time. Corinna --=20 Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat --Pes7OZCOzfZhFQfq Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQIcBAEBAgAGBQJSFkbrAAoJEPU2Bp2uRE+gFk0P/ioddK6gP4DVipxlWvaOgx/a yqLNnoyFHrL15wHfzYd3EVFAFsOAzxFwfS5r/FIUoo/xfakeft8//SS3HlVjmB3R tUPARtjLo0dzt+ou40zfx8S0ZaY4y+15QxnGjoSfxcph66XL3g7bHzpqraVnSX3f WN4/NnAO1kBK+drQWeiL6cJ2NCzzpCea6rW7lYGsc517ztTTNBC5C8hrzhn/qTyH QH5c0cyTC+2XSuWOIv1oAgJ9e7uqh/8piivNt8GqoTCYR+6Kys4xR0UU238kKE2P 21di0uFBaR3dp1DdLhFFZe7LJF+hd32d4uTzrhVHWBnL6O3qhn8rmCsiP6lfCN9X s1Cf5o08vIVABNt904mN75hbeP9Rh6q2hicqP8dM3ZxW0E0cX+SR5ftY9W5DMICC 2HGDvyMy4Wr9ROzrIhncmOGGz/r7tB2L7LoeKJnmXIVIjH6PgWIA8OA2l0UEokNx gJNQbKgNeMwssGwcToUebr7qvKWu3i1HAvWvtXu57K4RN5q7IRqfOQYk0zPpbfgW zh53zzKeBW4Hpw967dro51bFlQ1kYq/IQ1TD2b2OAgsMpPFTWz5BnsYwcaj4Wwe8 qU8ZM4F88jaa52k1oPURfTaThtHvys1P283TFisnZsq7gkB4rm92GqePb29DQjyc AuYGuB7ZiSMJB7TYm910 =Udt3 -----END PGP SIGNATURE----- --Pes7OZCOzfZhFQfq--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |