Oops, I meant the subject to be: "Prevent library from being mapped non-contiguously"
On Sun, 2008-04-27 at 21:01 -0400, Albert Lee wrote: > 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 >