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



Reply via email to