Hi, I'm trying to fix a problem in Wine that is caused by a shared library mapping by the dynamic linker. Wine's memory management facility keeps track of where some libraries are mapped and assumes they occupy a contiguous range of the process address space.
However, in some cases they are not contiguous. In the following example, there is a 56K "hole" (containing a single page?) between sections of a library at 7FFB0000. 7FF20000 448K r-x-- /export/ws/wine/dlls/ntdll/ntdll.dll.so 7FF90000 4K rw--- /export/ws/wine/dlls/ntdll/ntdll.dll.so 7FF91000 120K r-x-- /export/ws/wine/dlls/ntdll/ntdll.dll.so 7FFB0000 4K rw--- 7FFBE000 40K rwx-- /export/ws/wine/dlls/ntdll/ntdll.dll.so 7FFC8000 72K rwx-- /export/ws/wine/dlls/ntdll/ntdll.dll.so The problem is that an mmap after the library is loaded can occupy that "hole", which then appears as an overlapping segment to Wine's memory management (http://bugs.winehq.org/attachment.cgi?id=12470 ). What is responsible for this "hole"? Is there a way to prevent it when creating the object file for the library? Thanks! -Albert