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