This is the mail archive of the cygwin-developers mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Extending /proc/*/maps


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.

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.

Thoughts?
Ryan

Upstream cygwin output:
$ cat /proc/self/maps
00400000-00414000 r-xs 00401000 2C36:17C8 281474977270964 /usr/bin/cat.exe
775E0000-77760000 r-xs 00000000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
75650000-75760000 r-xs 756632D3 2C36:17C8 281474976927037 /cygdrive/c/Windows/syswow64/kernel32.dll
75350000-75396000 r-xs 75357478 2C36:17C8 281474976925120 /cygdrive/c/Windows/syswow64/KERNELBASE.dll
61000000-61450000 r-xs 6106F960 2C36:17C8 844424930325032 /usr/bin/cygwin1.dll
75A60000-75B00000 r-xs 75A749E5 2C36:17C8 281474976927159 /cygdrive/c/Windows/syswow64/ADVAPI32.DLL
75050000-750FC000 rw-p 7505A472 2C36:17C8 281474976749314 /cygdrive/c/Windows/syswow64/msvcrt.dll
76840000-76859000 r-xs 76844975 2C36:17C8 281474976749841 /cygdrive/c/Windows/SysWOW64/sechost.dll
76750000-76840000 r-xs 76760569 2C36:17C8 281474976924963 /cygdrive/c/Windows/syswow64/RPCRT4.dll
74CD0000-74D30000 r-xs 74CEA3B3 2C36:17C8 281474976924512 /cygdrive/c/Windows/syswow64/SspiCli.dll
74CC0000-74CCC000 r-xs 74CC10E1 2C36:17C8 281474976748415 /cygdrive/c/Windows/syswow64/CRYPTBASE.dll
6C5F0000-6C6EA000 rw-s 6C606930 2C36:17C8 281474977291653 /usr/bin/cygiconv-2.dll
67F00000-67F0F000 rw-s 67F08920 2C36:17C8 562949954003711 /usr/bin/cyggcc_s-1.dll
73FA0000-73FAD000 r-xs 73FA6030 2C36:17C8 281474977291659 /usr/bin/cygintl-8.dll
76980000-76985000 rw-p 76981438 2C36:17C8 281474976749672 /cygdrive/c/Windows/system32/psapi.dll

The new version:
$ cat /proc/self/maps
00010000-00020000 rw-p 00000000 0000:0000 0 [shared]
00020000-00030000 rw-p 00000000 0000:0000 0 [shared]
00030000-00031000 rw-p 00000000 0000:0000 0 [shared]
00040000-00041000 r--p 00000000 2C36:17C8 281474976748229 /cygdrive/c/Windows/System32/apisetschema.dll
00050000-00089000 ---p 00000000 0000:0000 0
00089000-0008C000 rw-s 00039000 0000:0000 0
0008C000-00090000 rw-p 0003C000 0000:0000 0
00090000-0027B000 ---p 00000000 0000:0000 0
0027B000-0027C000 rw-s 001EB000 0000:0000 0
0027C000-00290000 rw-p 001EC000 0000:0000 0
00290000-00294000 r--p 00000000 0000:0000 0 [shared]
002A0000-002A1000 rw-p 00000000 0000:0000 0
002B0000-00317000 r--p 00000000 2C36:17C8 281474976927380 /cygdrive/c/Windows/System32/locale.nls
00320000-00326000 rw-p 00000000 0000:0000 0
00326000-003A0000 ---p 00006000 0000:0000 0
003D9000-003DC000 rw-s 00039000 0000:0000 0
003DC000-003E0000 rw-p 0003C000 0000:0000 0
00400000-00401000 r--p 00000000 2C36:17C8 281474977525743 /usr/bin/cat.exe
00401000-0040F000 r-xp 00001000 2C36:17C8 281474977525743 /usr/bin/cat.exe
0040F000-00410000 rw-p 0000F000 2C36:17C8 281474977525743 /usr/bin/cat.exe
00490000-004C9000 rw-p 00000000 0000:0000 0 [heap]
004C9000-00590000 ---p 00039000 0000:0000 0 [heap]
006D0000-006D3000 rw-p 00000000 0000:0000 0 [heap]
006D3000-006E0000 ---p 00003000 0000:0000 0 [heap]
00AE0000-00B50000 rw-p 00400000 0000:0000 0 [heap]
00B50000-18AE0000 ---p 00470000 0000:0000 0
18CDB000-18CDC000 rw-s 001FB000 0000:0000 0
18CDC000-18CE0000 rw-p 001FC000 0000:0000 0
60FB0000-60FB8000 rw-p 00000000 0000:0000 0 [shared]
60FC0000-60FC5000 rw-p 00000000 0000:0000 0 [shared]
60FE0000-60FF1000 rw-p 00000000 0000:0000 0 [shared]
61000000-61001000 r--p 00000000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61001000-61162000 r-xp 00001000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61162000-61164000 rwxp 00162000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61164000-61165000 rw-p 00164000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61184000-611E2000 r--p 00184000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
611E2000-611E3000 rw-p 001E2000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61217000-61221000 r--p 00217000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61221000-61222000 rw-p 00221000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61222000-6123B000 r--p 00222000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
6123B000-61246000 rw-p 0023B000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61246000-61247000 r--p 00246000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
61247000-61248000 rw-p 00247000 2C36:17C8 1125899907652206 /usr/bin/cygwin1.dll
674C0000-674C1000 r--p 00000000 2C36:17C8 281474977544257 /usr/bin/cygiconv-2.dll
674C1000-674D7000 r-xp 00001000 2C36:17C8 281474977544257 /usr/bin/cygiconv-2.dll
674D7000-674D8000 rw-p 00017000 2C36:17C8 281474977544257 /usr/bin/cygiconv-2.dll
675B6000-675B7000 r--p 000F6000 2C36:17C8 281474977544257 /usr/bin/cygiconv-2.dll
675B7000-675B8000 rw-p 000F7000 2C36:17C8 281474977544257 /usr/bin/cygiconv-2.dll
675B9000-675BA000 r--p 000F9000 2C36:17C8 281474977544257 /usr/bin/cygiconv-2.dll
67F00000-67F01000 r--p 00000000 2C36:17C8 281474977543786 /usr/bin/cyggcc_s-1.dll
67F01000-67F09000 r-xp 00001000 2C36:17C8 281474977543786 /usr/bin/cyggcc_s-1.dll
67F09000-67F0A000 rw-p 00009000 2C36:17C8 281474977543786 /usr/bin/cyggcc_s-1.dll
67F0C000-67F0D000 r--p 0000C000 2C36:17C8 281474977543786 /usr/bin/cyggcc_s-1.dll
67F0D000-67F0E000 rw-p 0000D000 2C36:17C8 281474977543786 /usr/bin/cyggcc_s-1.dll
67F0E000-67F0F000 r--p 0000E000 2C36:17C8 281474977543786 /usr/bin/cyggcc_s-1.dll
6F5C0000-6F5C1000 r--p 00000000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5C1000-6F5C7000 r-xp 00001000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5C7000-6F5C8000 rw-p 00007000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5C8000-6F5C9000 r--p 00008000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5C9000-6F5CA000 rw-p 00009000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5CA000-6F5CB000 r--p 0000A000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5CB000-6F5CC000 rw-p 0000B000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
6F5CC000-6F5CD000 r--p 0000C000 2C36:17C8 281474977544263 /usr/bin/cygintl-8.dll
73420000-73421000 r--p 00000000 0000:0000 0 /cygdrive/c/Windows/System32/wow64cpu.dll
73421000-73424000 r-xp 00001000 0000:0000 0 /cygdrive/c/Windows/System32/wow64cpu.dll
73424000-73425000 rw-p 00004000 0000:0000 0 /cygdrive/c/Windows/System32/wow64cpu.dll
73425000-73428000 r--p 00005000 0000:0000 0 /cygdrive/c/Windows/System32/wow64cpu.dll
73430000-73431000 r--p 00000000 0000:0000 0 /cygdrive/c/Windows/System32/wow64win.dll
73431000-7347E000 r-xp 00001000 0000:0000 0 /cygdrive/c/Windows/System32/wow64win.dll
7347E000-7347F000 rw-p 0004E000 0000:0000 0 /cygdrive/c/Windows/System32/wow64win.dll
73483000-7348C000 r--p 00053000 0000:0000 0 /cygdrive/c/Windows/System32/wow64win.dll
73490000-73491000 r--p 00000000 0000:0000 0 /cygdrive/c/Windows/System32/wow64.dll
73491000-734C9000 r-xp 00001000 0000:0000 0 /cygdrive/c/Windows/System32/wow64.dll
734C9000-734CB000 rw-p 00039000 0000:0000 0 /cygdrive/c/Windows/System32/wow64.dll
734CB000-734CF000 r--p 0003B000 0000:0000 0 /cygdrive/c/Windows/System32/wow64.dll
74CC0000-74CC1000 r--p 00000000 2C36:17C8 281474976748415 /cygdrive/c/Windows/SysWOW64/cryptbase.dll
74CC1000-74CC9000 r-xp 00001000 2C36:17C8 281474976748415 /cygdrive/c/Windows/SysWOW64/cryptbase.dll
74CC9000-74CCA000 rw-p 00009000 2C36:17C8 281474976748415 /cygdrive/c/Windows/SysWOW64/cryptbase.dll
74CCA000-74CCC000 r--p 0000A000 2C36:17C8 281474976748415 /cygdrive/c/Windows/SysWOW64/cryptbase.dll
74CD0000-74CD1000 r--p 00000000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74CD1000-74CE0000 ---p 00001000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74CE0000-74CF6000 r-xp 00010000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74CF6000-74D00000 ---p 00026000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74D00000-74D01000 rw-p 00030000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74D01000-74D10000 ---p 00031000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74D10000-74D11000 r--p 00040000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74D11000-74D20000 ---p 00041000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74D20000-74D22000 r--p 00050000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
74D22000-74D30000 ---p 00052000 2C36:17C8 281474976924512 /cygdrive/c/Windows/SysWOW64/sspicli.dll
75050000-75051000 r--p 00000000 2C36:17C8 281474976749314 /cygdrive/c/Windows/SysWOW64/msvcrt.dll
75051000-750F0000 r-xp 00001000 2C36:17C8 281474976749314 /cygdrive/c/Windows/SysWOW64/msvcrt.dll
750F0000-750F1000 rw-p 000A0000 2C36:17C8 281474976749314 /cygdrive/c/Windows/SysWOW64/msvcrt.dll
750F7000-750FC000 r--p 000A7000 2C36:17C8 281474976749314 /cygdrive/c/Windows/SysWOW64/msvcrt.dll
75350000-75351000 r--p 00000000 2C36:17C8 281474976925120 /cygdrive/c/Windows/SysWOW64/KernelBase.dll
75351000-75390000 r-xp 00001000 2C36:17C8 281474976925120 /cygdrive/c/Windows/SysWOW64/KernelBase.dll
75390000-75392000 rw-p 00040000 2C36:17C8 281474976925120 /cygdrive/c/Windows/SysWOW64/KernelBase.dll
75392000-75396000 r--p 00042000 2C36:17C8 281474976925120 /cygdrive/c/Windows/SysWOW64/KernelBase.dll
75650000-75651000 r--p 00000000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75651000-75660000 ---p 00001000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75660000-75721000 r-xp 00010000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75721000-75730000 ---p 000D1000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75730000-75731000 rw-p 000E0000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75732000-75740000 ---p 000E2000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75740000-75741000 r--p 000F0000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75741000-75750000 ---p 000F1000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75750000-7575B000 r--p 00100000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
7575B000-75760000 ---p 0010B000 2C36:17C8 281474976927037 /cygdrive/c/Windows/SysWOW64/kernel32.dll
75A60000-75A61000 r--p 00000000 2C36:17C8 281474976927159 /cygdrive/c/Windows/SysWOW64/advapi32.dll
75A61000-75AD3000 r-xp 00001000 2C36:17C8 281474976927159 /cygdrive/c/Windows/SysWOW64/advapi32.dll
75AD3000-75AD4000 rw-p 00073000 2C36:17C8 281474976927159 /cygdrive/c/Windows/SysWOW64/advapi32.dll
75AD7000-75B00000 r--p 00077000 2C36:17C8 281474976927159 /cygdrive/c/Windows/SysWOW64/advapi32.dll
76750000-76751000 r--p 00000000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76751000-76760000 ---p 00001000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76760000-767F6000 r-xp 00010000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
767F6000-76800000 ---p 000A6000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76800000-76803000 r-xp 000B0000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76803000-76810000 ---p 000B3000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76810000-76811000 rw-p 000C0000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76811000-76820000 ---p 000C1000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76820000-76824000 r--p 000D0000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76824000-76830000 ---p 000D4000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76830000-76835000 r--p 000E0000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76835000-76840000 ---p 000E5000 2C36:17C8 281474976924963 /cygdrive/c/Windows/SysWOW64/rpcrt4.dll
76840000-76841000 r--p 00000000 2C36:17C8 281474976749841 /cygdrive/c/Windows/SysWOW64/sechost.dll
76841000-76854000 r-xp 00001000 2C36:17C8 281474976749841 /cygdrive/c/Windows/SysWOW64/sechost.dll
76854000-76855000 rw-p 00014000 2C36:17C8 281474976749841 /cygdrive/c/Windows/SysWOW64/sechost.dll
76857000-76859000 r--p 00017000 2C36:17C8 281474976749841 /cygdrive/c/Windows/SysWOW64/sechost.dll
76980000-76981000 r--p 00000000 2C36:17C8 281474976749672 /cygdrive/c/Windows/SysWOW64/psapi.dll
76981000-76982000 r-xp 00001000 2C36:17C8 281474976749672 /cygdrive/c/Windows/SysWOW64/psapi.dll
76982000-76983000 rw-p 00002000 2C36:17C8 281474976749672 /cygdrive/c/Windows/SysWOW64/psapi.dll
76983000-76985000 r--p 00003000 2C36:17C8 281474976749672 /cygdrive/c/Windows/SysWOW64/psapi.dll
76D20000-76E1A000 ---p 00000000 0000:0000 0
77190000-772AF000 ---p 00000000 0000:0000 0
77400000-77401000 r--p 00000000 2C36:17C8 281474976927378 /cygdrive/c/Windows/System32/ntdll.dll
77401000-77503000 r-xp 00001000 2C36:17C8 281474976927378 /cygdrive/c/Windows/System32/ntdll.dll
77503000-77532000 r--p 00103000 2C36:17C8 281474976927378 /cygdrive/c/Windows/System32/ntdll.dll
77532000-77533000 rw-p 00132000 2C36:17C8 281474976927378 /cygdrive/c/Windows/System32/ntdll.dll
7753E000-775A9000 r--p 0013E000 2C36:17C8 281474976927378 /cygdrive/c/Windows/System32/ntdll.dll
775E0000-775E1000 r--p 00000000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
775E1000-775F0000 ---p 00001000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
775F0000-776C6000 r-xp 00010000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
776C6000-776D0000 ---p 000E6000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
776D0000-776D1000 r-xp 000F0000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
776D1000-776E0000 ---p 000F1000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
776E0000-776E1000 rw-p 00100000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
776E9000-776F0000 ---p 00109000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
776F0000-77747000 r--p 00110000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
77747000-77750000 ---p 00167000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
77750000-77755000 r--p 00170000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
77755000-77760000 ---p 00175000 2C36:17C8 281474976927378 /cygdrive/c/Windows/SysWOW64/ntdll.dll
7EFB0000-7EFD3000 r--p 00000000 0000:0000 0 [shared]
7EFD8000-7EFDB000 rw-p 00000000 0000:0000 0
7EFDB000-7EFDE000 rw-p 00000000 0000:0000 0
7EFDE000-7EFDF000 rw-p 00000000 0000:0000 0
7EFDF000-7EFE0000 rw-p 00000000 0000:0000 0
7EFE0000-7EFE5000 r--p 00000000 0000:0000 0 [shared]
7EFE5000-7F0E0000 ---p 00005000 0000:0000 0 [shared]
7FFE0000-7FFE1000 r--p 00000000 0000:0000 0
7FFE1000-7FFF0000 ---p 00001000 0000:0000 0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]