This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cygheap base mismatch detected


Dave Korn <dave.korn <at> artimi.com> writes:

> 
> ----Original Message----
> >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.
> 
>     cheers,
>       DaveK

Dave:

What you write makes it appear that CygWin simply will not support
large executables that reference the CygWin DLL and are also launched
from a CygWin shell.  I can't believe that nobody has found a better
workaround than:

  (a) not using the CygWin DLL (not an option for us)
  (b) not launching from a CygWin shell (not an option for us)
  (c) reducing the memory space required by the program (again, not possible)
  (d) tinkering randomly with the stack size

Does anyone else know of another way around this problem?

                              -- Jens Dill
                                 Endeavor Information Systems





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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]