Extending /proc/*/maps

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Apr 19 16:01:00 GMT 2011

On Apr 19 11:38, Ryan Johnson wrote:
> Hi all,
> While trying to diagnose the problems with DLL placement during
> fork(), I extended the implementation of the procfs maps file to be
> much more complete, because I noticed the existing one was not
> showing even close to everything that was going on (comparison
> below).
> The official version can be summarized as follows:
> - It lists a subset of loaded dlls, as well as cygwin-mapped files.
> No other memory is shown.
> - Each mapped image or file has only one entry, with the listed
> permissions coming from the last mapped page in the file.
> - It calls GetWorkingSet, which retrieves an entry for every mapped
> page but ignores addresses which are only reserved.
> - It also calls GetModuleInformation and GetModuleFileNameExW to
> learn about loaded DLLs.
> My version:
> - Uses VirtualQueryEx to identify all memory segments (reserved or
> mapped), identifying those belonging to heap or shared memory
> - Lists all loaded dlls and all mapped files, using GetMappedFileNameW
> - Uses CreateToolhelp32Snapshot to identify heap segments
> I'm not sending a patch because I haven't (yet) signed the copyright
> release form, but if people are interested I will do so. Otherwise,
> I'll keep using it to debug but not bother cygwin-patches.

Please sign the copyright assignment and provide the patch.  This looks
very good to me.

> BTW, /cygdrive/c/Windows/System32/locale.nls seems to be the reason
> that even statically linked dlls don't always load in the same place
> twice in a row.

How so?  And then, when is it loaded?  I assume that this file is
fetched as soon as the GetLocaleInfo function is called.  What OS
are you using?  If it's Vista or later, there's a chance that the
LocaleNameToLCID function is the culprit as well.  But the real
problem is, how can that be worked around?  For the locale stuff
we need these functions.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

More information about the Cygwin-developers mailing list