This is the mail archive of the
mailing list for the Cygwin project.
RE: cygheap base mismatch detected
- From: "Dave Korn" <dave dot korn at artimi dot com>
- To: <cygwin at cygwin dot com>
- Date: Thu, 7 Apr 2005 14:19:38 +0100
- Subject: RE: cygheap base mismatch detected
>From: Andreas Heckel
>Sent: 07 April 2005 11:13
> Since I read that the error has something do with putting the cygwin1.dll
> in a certain memory space, I am wondering, if my prog is allocating too
> much memory (big arrays) or in "bad way".
> I am not an expert in these questions and didn't write the prog myself,
> so I just speculating...
Very likely indeed. If the .dll is already loaded in one process (your
bash shell) at a given address (usually its default base address), and then
you try and launch another process, and the executable has such huge arrays
that the address map is already occupied in that range before the cygwin1
dll has been loaded (i.e. when the executable itself is initially mapped
into the range), then the cygwin1 dll gets loaded at a new base address, the
two heaps don't line up, and everything goes pear-shaped.
Hmm. Perhaps that means it would work if you tried to run your Traj2
program from a DOS command shell, with no other cygwin stuff running in the
system at all.
Alternatively, sometimes by playing with the -Wl,--stack=<size> option,
you can cause the program's process space to end up being laid out
differently again, but this is very random and hit-and-miss: it's pure luck,
and you can't guess whether growing the stack size, or shrinking it, or by
how much, might or might not make just the difference it needed to work.
Can't think of a witty .sigline today....
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html