|
From: Nicholas N. <nj...@ca...> - 2004-06-27 11:35:19
|
Hi, On my machine, it seems that /lib/tls/libc.so is always put at address 0x42000000. All other .so files seem to move around and get put near the base of the mmap-segment. Here's an example -- with Memcheck, here the mmap-segment starts at 0x1b8e4000, and all the other .so files are put around there, but /lib/tlc/libc.so isn't: 08048000-08049000 r-xp 00000000 00:0e 4309378 /auto/homes/njn25/grind/head6/mmap 08049000-0804a000 rw-p 00000000 00:0e 4309378 /auto/homes/njn25/grind/head6/mmap 1b8e4000-1b8f9000 r-xp 00000000 09:03 74918 /lib/ld-2.3.2.so 1b8f9000-1b8fa000 rw-p 00015000 09:03 74918 /lib/ld-2.3.2.so 1b8fb000-1b8fc000 rw-p 00000000 00:00 0 1b8fd000-1b8fe000 r-xp 00000000 00:0e 12496364 /auto/homes/njn25/grind/head6/coregrind/vg_inject.so 1b8fe000-1b8ff000 rw-p 00000000 00:0e 12496364 /auto/homes/njn25/grind/head6/coregrind/vg_inject.so 1b900000-1b905000 r-xp 00000000 00:0e 7789291 /auto/homes/njn25/grind/head6/memcheck/vgpreload_memcheck.so 1b905000-1b906000 rw-p 00004000 00:0e 7789291 /auto/homes/njn25/grind/head6/memcheck/vgpreload_memcheck.so 1b907000-1b908000 rw-p 00000000 00:00 0 1b913000-1b914000 rw-p 00000000 00:00 0 42000000-42130000 r-xp 00000000 09:03 75056 /lib/tls/libc-2.3.2.so 42130000-42133000 rw-p 00130000 09:03 75056 /lib/tls/libc-2.3.2.so 42133000-42136000 rw-p 00000000 00:00 0 This is a bit frustrating because it often cuts the mmap-segment into two pieces unnecessarily, which reduces the size of the biggest mmap that can be made. Any ideas why this might be so? I guess this could be mapped in with with MAP_FIXED... I tried tweaking things so that 0x42000000 isn't available to the client (by artificially inflating Memcheck's shadow memory needs) and I got this: date: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory It's probably out of our control, which I can live with, ok, but I am curious as to why this is happening. N |