Process map and fork problems

Achim Gratz Stromeko@NexGo.DE
Wed Apr 20 11:14:00 GMT 2016

Corinna Vinschen <corinna-cygwin <at>> writes:
> This is one heap.  The first region is just the already committed
> part, the remainder is the reserved part.
> THis is the standard Cygwin heap area on 32 bit machines, which always
> starts at 0x20000000.

So, shouldn't rebase keep this area clear on these machines?

> On 64 bit systems, 32 bit applications have a 4 Gig virtual address
> space.  On 32 bit systems, procecces only have a 2 Gig virtual address
> space, unless the /3gb kernel option is given.

OK.  On Windows7 that means 'BCDedit /set increaseuserva=3072', right?  I
think all the affected machines have 4GB memory installed, but the option
may not have been default when they were installed.

> On 64 bit systems and on /3gb enabled 32 bit systems, the heap of 32 bit
> Cygwin processes always starts at 0x80000000L.
> Since that isn't available on 32 bit systems by default, the heap has
> to start within the lower 2 Gigs.  That's where the 0x2000000 address
> comes from.

With /3GB you mean 4GT (aka PAE), right?  And 32bit is without PAE?
> If you have collisions because you're providing too many Cygwin DLLs,
> you have to tweak these installations manually.

As long as Cygwin determines automatically where the heap is located, then
rebase should take care of that.  It already knows to skip the cygwin1.dll
address range, how would it ask for the heap location?

No I don't think I have an overly large Cygwin installation, but Perl,
Octave and Python pull in a lot of images.  I guess what pushed it over the
edge is the LLVM stuff that something pulls in since a few months, so that
explains the timeframe of the problem popping up most probably.


Problem reports:
Unsubscribe info:

More information about the Cygwin mailing list