ptrace single-stepping change breaks Wine

Andrew Morton akpm at osdl.org
Tue Jan 4 15:21:11 CST 2005


Mike Hearn <mh at codeweavers.com> wrote:
>
> Also a precise description of what flex-mmap does would be good. Google
>  wasn't too informative, best I could get was that it means mmap
>  allocates from the "top" of the address space down. But where is the top
>  exactly?

Ingo has described it thus:


before:

  0x08000000 ... binary code
  0x08xxxxxx ... brk area
  0x40000000 ... start of mmap, new mmaps go after old ones
  0xbfxxxxxx ... stack

after:

  0x08000000 ... binary code
  0x08xxxxxx ... brk area
  0xbfxxxxxx ... _end_ of all mmaps, new mmaps go below old ones
  0xbfyyyyyy ... stack

the 'after' layout guarantees that brk area (malloc()) can grow
unlimited and mmap() can grow unlimited - they will meet somewhere
inbetween when almost all of the VM is used up. [the 'top' of the mmaps
in the 'after' layout is constrained by the stack ulimit - the stack
must still fit and we never allocate into the stack's yet unallocated
and growable hole.]

with the 'before' layout we've got 900 MB for brk() and 1.9GB for
mmaps() - a rigid limit.



More information about the wine-devel mailing list