I notice that in the failed call, the starting address specified is not
a multiple of the hugetlb page size of 2MB. That is the problem.
Here's the result of a little experiment to prove that this is indeed
the problem:
open("/dev/mprov/tmm/tmm.0", O_RDWR) = 3
mmap2(0x496a000, 2097152, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE,
3, 0) = 0x4a00000
munmap(0x4a00000, 2097152) = 0
mmap2(0x496a000, 2097152, PROT_READ|PROT_WRITE,
MAP_SHARED|MAP_FIXED|MAP_POPULATE, 3, 0) = -1 EINVAL (Invalid argument)
Note that it works the first time *and doesn't give the adresss
requested* and, of course, doesn't work the second time, when MAP_FIXED
is supplied.
I presume that it's pretty difficult to say when a file descriptor
points to a file on a hugetlbfs so it seems like the right fix for this
problem is to make generic_PRE_sys_mmap try a call without MAP_FIXED and
make aspacem deal with the address it gets (if it doesn't already have
this ability).
-----Original Message-----
From: Michael Rosellini
Sent: Thursday, October 30, 2008 5:40 PM
To: '[email protected]'
Subject: mmap woes
Hello developers and fellow users of Valgrind. You are all the best
people in the world.
Thus, I have no doubt that you will have most helpful things to tell me
about my little problem, which takes the typical form: I have a program
that is happy when not running under Valgrind and unhappy when running
under Valgrind.
Environment: Linux 2.4.21, Opteron, (statically linked) glibc 2.3.2,
Valgrind 3.3.1.
Problematic program behavior: Call mmap2 and old_mmap a bunch.
Native: No starting addresses are given to the syscall. All's well.
Valgrind: Valgrind uses aspacem to cook up starting addresses. All's
well for a while, but eventually one comes back from the kernel EINVAL.
The starting address of the failed call is a multiple of the page size.
The offset is zero. The size is a nice, safe 2MB. I have verified
(with strace) that this is not the wrapper generating the EINVAL and
that the arguments to the syscall are what I believe they are. The
address Valgrind chooses is relatively low, so there is no wrap-around
problem.
It may be noteworthy that the file being mapped is on a hugetlbfs.
Any guesses as to why this call is failing? I was not readily able to
extract an answer from do_mmap_pgoff in linux/mm/mmap.c.
Alternatively, I notice that generic_PRE_sys_mmap always supplies
MAP_FIXED but the comment for am_get_advisory says that it is "an
advisory system only: the kernel can in fact do whatever it likes as far
as placement goes, and we have no absolute control over it." This isn't
quite true--at least not in the case of Linux: If you ask for a starting
address with MAP_FIXED, you either get that address or your call fails
(AFAICT). So but might I be able to hack up generic_PRE_sys_mmap to
make one final attempt, not supplying MAP_FIXED, without it wreaking
havoc on the rest of the system in short order to receive the mapping in
a place where aspacem didn't want it?
Here's an strace log of what the program does when not running under
Valgrind (with irrelevant syscalls elided):
...
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xb75f7000
...
munmap(0xb75f7000, 4096) = 0
...
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xb75f7000
...
munmap(0xb75f7000, 4096) = 0
...
open("/dev/mprov/tmm/tmm.0", O_RDWR|O_CREAT, 0600) = 3
ftruncate(3, 79691776) = 0
mmap2(0x5400000, 79691776, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_POPULATE, 3, 0) = 0x5400000
...
open("/var/tmstat/private/tmm0", O_RDWR|O_CREAT|O_TRUNC, 0644) = 3
ftruncate(3, 4096) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) =
0xb75f7000
ftruncate(3, 8192) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1000) =
0xb75f4000
ftruncate(3, 12288) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2000) =
0xb75f3000
...
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xb75f2000
...
munmap(0xb75f2000, 4096) = 0
ftruncate(3, 16384) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3000) =
0xb75f2000
ftruncate(3, 20480) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x4000) =
0xb75f1000
ftruncate(3, 24576) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x5000) =
0xb75f0000
ftruncate(3, 28672) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x6000) =
0xb75ef000
ftruncate(3, 32768) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x7000) =
0xb75ee000
ftruncate(3, 36864) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x8000) =
0xb75ed000
ftruncate(3, 40960) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x9000) =
0xb75ec000
ftruncate(3, 45056) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0xa000) =
0xb75eb000
ftruncate(3, 49152) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0xb000) =
0xb75ea000
...
ftruncate(3, 53248) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0xc000) =
0xb75e9000
ftruncate(3, 57344) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0xd000) =
0xb75e8000
ftruncate(3, 61440) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0xe000) =
0xb75e7000
ftruncate(3, 65536) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0xf000) =
0xb75e6000
ftruncate(3, 69632) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x10000) =
0xb75e5000
ftruncate(3, 73728) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x11000) =
0xb75e4000
...
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xb75e3000
...
munmap(0xb75e3000, 4096) = 0
...
open("/dev/shm/tmm", O_RDWR|O_CREAT|O_NOFOLLOW, 0666) = 4
fcntl64(4, F_GETFD) = 0
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
flock(4, LOCK_EX) = 0
ftruncate(4, 20480) = 0
old_mmap(NULL, 24576, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) =
0xb75de000
munmap(0xb75de000, 4096) = 0
old_mmap(0xb75de000, 4096, PROT_NONE, MAP_PRIVATE, 4, 0) = 0xb75de000
...
ftruncate(3, 77824) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x12000) =
0xb75dd000
ftruncate(3, 81920) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x13000) =
0xb75dc000
...
ftruncate(3, 86016) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x14000) =
0xb75db000
open("/dev/tmm0", O_RDWR) = 5
ioctl(5, SIOCGIFMAP, {ifr_name="", ifr_map={mem_start=0xf89a9000,
mem_end=0xf8aa9000, base_addr=0, irq=0, dma=0, port=0}}) = 0
old_mmap(NULL, 524288, PROT_READ|PROT_WRITE, MAP_SHARED, 5, 0) =
0xb755b000
old_mmap(NULL, 524288, PROT_READ|PROT_WRITE, MAP_SHARED, 5, 0x80000) =
0xb74db000
ftruncate(3, 90112) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x15000) =
0xb74da000
ftruncate(3, 94208) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x16000) =
0xb74d9000
ftruncate(3, 98304) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x17000) =
0xb74d8000
ftruncate(3, 102400) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x18000) =
0xb74d7000
ftruncate(3, 106496) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x19000) =
0xb74d6000
ftruncate(3, 110592) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1a000) =
0xb74d5000
ftruncate(3, 114688) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1b000) =
0xb74d4000
ftruncate(3, 118784) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1c000) =
0xb74d3000
ftruncate(3, 122880) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1d000) =
0xb74d2000
ftruncate(3, 126976) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1e000) =
0xb74d1000
ftruncate(3, 131072) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1f000) =
0xb74d0000
ftruncate(3, 135168) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x20000) =
0xb74cf000
ftruncate(3, 139264) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x21000) =
0xb74ce000
ftruncate(3, 143360) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x22000) =
0xb74cd000
ftruncate(3, 147456) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x23000) =
0xb74cc000
ftruncate(3, 151552) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x24000) =
0xb74cb000
ftruncate(3, 155648) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x25000) =
0xb74ca000
...
ftruncate(3, 159744) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x26000) =
0xb74a8000
...
ftruncate(3, 163840) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x27000) =
0xb74a7000
...
ftruncate(3, 167936) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x28000) =
0xb74a6000
ftruncate(3, 172032) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x29000) =
0xb74a5000
ftruncate(3, 176128) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2a000) =
0xb74a4000
...
ftruncate(3, 180224) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2b000) =
0xb74a3000
ftruncate(3, 184320) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2c000) =
0xb74a2000
ftruncate(3, 188416) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2d000) =
0xb74a1000
ftruncate(3, 192512) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2e000) =
0xb74a0000
ftruncate(3, 196608) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2f000) =
0xb749f000
ftruncate(3, 200704) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x30000) =
0xb749e000
ftruncate(3, 204800) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x31000) =
0xb749d000
ftruncate(3, 208896) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x32000) =
0xb749c000
ftruncate(3, 212992) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x33000) =
0xb749b000
...
ftruncate(3, 217088) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x34000) =
0xb749a000
ftruncate(3, 221184) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x35000) =
0xb7499000
ftruncate(3, 225280) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x36000) =
0xb7498000
...
ftruncate(3, 229376) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x37000) =
0xb7497000
ftruncate(3, 233472) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x38000) =
0xb7496000
ftruncate(3, 237568) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x39000) =
0xb7495000
ftruncate(3, 241664) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3a000) =
0xb7494000
ftruncate(3, 245760) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3b000) =
0xb7493000
ftruncate(3, 249856) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3c000) =
0xb7492000
ftruncate(3, 253952) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3d000) =
0xb7491000
ftruncate(3, 258048) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3e000) =
0xb7490000
...
ftruncate(3, 262144) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x3f000) =
0xb748e000
ftruncate(3, 266240) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x40000) =
0xb748d000
...
ftruncate(3, 270336) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x41000) =
0xb748c000
open("/dev/mprov/tmm/shared.f5d90100", O_RDWR|O_CREAT, 0600) = 20
ftruncate(20, 2097152) = 0
mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, 20,
0) = 0x40000000
...
close(20) = 0
...
open("/dev/mprov/tmm/shared.f5d80100", O_RDWR|O_CREAT, 0600) = 20
ftruncate(20, 2097152) = 0
mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, 20,
0) = 0x40200000
...
close(20) = 0
...
open("/dev/mprov/tmm/shared.f5d60100", O_RDWR|O_CREAT, 0600) = 20
ftruncate(20, 2097152) = 0
mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, 20,
0) = 0x40400000
...
close(20) = 0
...
open("/dev/mprov/tmm/shared.f5d50100", O_RDWR|O_CREAT, 0600) = 20
ftruncate(20, 2097152) = 0
mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, 20,
0) = 0x40600000
...
<program merily goes on to do useful work>
Here's an strace log of the behavior under valgrind. This is grossly
abbreviated because of the enormous number of mmap calls Valgrind itself
seems to make. I have removed all MAP_ANONYMOUS calls for 16KB regions
with high starting addresses and everything except mmap. The mmap calls
I removed are, presumably, Valgrind grabbing its own memory. I expect
that they are not related to the problem since their starting addresses
differ so much from those calculated by aspacem for my mappings.
old_mmap(NULL, 20487, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb75f6000
old_mmap(0xe80000, 1275340, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0xe80000
old_mmap(0xfb2000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x132000) = 0xfb2000
old_mmap(0xfb5000, 9676, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfb5000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xb75f5000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb75f9000
mmap2(0x61fff000, 4194304, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x61fff000
mmap2(0x400000, 13074432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
0) = 0x400000
mmap2(0x1078000, 1032192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0xc77) = 0x1078000
mmap2(0x1174000, 2707456, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x1174000
mmap2(0xbeffb000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xbeffb000
mmap2(0x4000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x4000000
mmap2(0x623ff000, 1048576, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x623ff000
mmap2(0x624ff000, 500000, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x624ff000
mmap2(0x6257a000, 1048576, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x6257a000
mmap2(0x4800000, 163576565, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0) =
0x4800000
mmap2(0x6267a000, 1048576, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x6267a000
mmap2(0x6277a000, 1048576, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x6277a000
mmap2(0x6287a000, 1048576, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x6287a000
mmap2(0x6297a000, 1150976, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x6297a000
mmap2(0x62a93000, 2297856, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x62a93000
mmap2(0x62cc4000, 4591616, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x62cc4000
mmap2(0x63125000, 9179136, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x63125000
mmap2(0x639e6000, 4100096, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x639e6000
mmap2(0x4800000, 2945346, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0) =
0x4800000
mmap2(0x63de7000, 81920, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x63de7000
mmap2(0x63dfb000, 29772288, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x63dfb000
mmap2(0x65a60000, 4979596, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x65a60000
mmap2(0x65f20000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x65f20000
mmap2(0x65f34000, 1048576, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x65f34000
mmap2(0xbeffa000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xbeffa000
mmap2(0x4800000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4800000
mmap2(0x6603c000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x6603c000
mmap2(0xbeff9000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xbeff9000
mmap2(0x4800000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4800000
mmap2(0x5400000, 79691776, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_POPULATE, 3, 0) = 0x5400000
mmap2(0x4800000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3, 0)
= 0x4800000
mmap2(0x4801000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1) = 0x4801000
mmap2(0x4802000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2) = 0x4802000
mmap2(0x4803000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4803000
mmap2(0x4803000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3) = 0x4803000
mmap2(0x4804000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x4) = 0x4804000
mmap2(0x4805000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x5) = 0x4805000
mmap2(0x4806000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x6) = 0x4806000
mmap2(0x4807000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x7) = 0x4807000
mmap2(0x4808000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x8) = 0x4808000
mmap2(0x4809000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x9) = 0x4809000
mmap2(0x480a000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0xa) = 0x480a000
mmap2(0x480b000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0xb) = 0x480b000
mmap2(0x480c000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0xc) = 0x480c000
mmap2(0x480d000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0xd) = 0x480d000
mmap2(0x480e000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0xe) = 0x480e000
mmap2(0x480f000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0xf) = 0x480f000
mmap2(0x4810000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x10) = 0x4810000
mmap2(0x4811000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x11) = 0x4811000
mmap2(0x4812000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4812000
mmap2(0x4812000, 24576, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 4,
0) = 0x4812000
mmap2(0x4812000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 4, 0) =
0x4812000
mmap2(0x4818000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x12) = 0x4818000
mmap2(0x4819000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x13) = 0x4819000
mmap2(0x481a000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x14) = 0x481a000
mmap2(0x481b000, 524288, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 5,
0) = 0x481b000
mmap2(0x489b000, 524288, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 5,
0x80) = 0x489b000
mmap2(0x491b000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x15) = 0x491b000
mmap2(0x491c000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x16) = 0x491c000
mmap2(0x491d000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x17) = 0x491d000
mmap2(0x491e000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x18) = 0x491e000
mmap2(0x491f000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x19) = 0x491f000
mmap2(0x4920000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1a) = 0x4920000
mmap2(0x4921000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1b) = 0x4921000
mmap2(0x4922000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1c) = 0x4922000
mmap2(0x4923000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1d) = 0x4923000
mmap2(0x4924000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1e) = 0x4924000
mmap2(0x4925000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x1f) = 0x4925000
mmap2(0x4926000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x20) = 0x4926000
mmap2(0x4927000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x21) = 0x4927000
mmap2(0x4928000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x22) = 0x4928000
mmap2(0x4929000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x23) = 0x4929000
mmap2(0x492a000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x24) = 0x492a000
mmap2(0x492b000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x25) = 0x492b000
mmap2(0x494d000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x26) = 0x494d000
mmap2(0x494e000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x27) = 0x494e000
mmap2(0x494f000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x28) = 0x494f000
mmap2(0x4950000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x29) = 0x4950000
mmap2(0x4951000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2a) = 0x4951000
mmap2(0x4952000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2b) = 0x4952000
mmap2(0x4953000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2c) = 0x4953000
mmap2(0x4954000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2d) = 0x4954000
mmap2(0x4955000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2e) = 0x4955000
mmap2(0x4956000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x2f) = 0x4956000
mmap2(0x4957000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x30) = 0x4957000
mmap2(0x4958000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x31) = 0x4958000
mmap2(0x4959000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x32) = 0x4959000
mmap2(0x495a000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x33) = 0x495a000
mmap2(0x495b000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x34) = 0x495b000
mmap2(0x495c000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x35) = 0x495c000
mmap2(0x495d000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x36) = 0x495d000
mmap2(0x495e000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x37) = 0x495e000
mmap2(0x495f000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x38) = 0x495f000
mmap2(0x4960000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x39) = 0x4960000
mmap2(0x4961000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3a) = 0x4961000
mmap2(0x4962000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3b) = 0x4962000
mmap2(0x4963000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3c) = 0x4963000
mmap2(0x4964000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3d) = 0x4964000
mmap2(0x4965000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3e) = 0x4965000
mmap2(0x4967000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x3f) = 0x4967000
mmap2(0x4968000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x40) = 0x4968000
mmap2(0x66560000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0x66560000
mmap2(0x4969000, 4096, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3,
0x41) = 0x4969000
mmap2(0x496a000, 2097152, PROT_READ|PROT_WRITE,
MAP_SHARED|MAP_FIXED|MAP_POPULATE, 20, 0) = -1 EINVAL (Invalid argument)
And, finally, this is the line output by --trace-syscalls for the
failing mmap:
SYSCALL[20235,1](192) sys_mmap2 ( 0x0, 2097152, 3, 32769, 20, 0 ) -->
[pre-fail] Failure(0x16)
Thanks in advance for any advice,
-m
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users