Comment # 1 on bug 957379 from
The default RAM size for Exynos4 boards is 1GB. So we're trying a 1GB
allocation on a system that has 3GB of total virtual address space. In
succeeding cases we have:

6474  mmap2(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb3998000
[...]
6474  brk(0x80fc9000)                   = 0x80fc9000
6474  mmap2(NULL, 1073741824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40000000

while in the failed case we get:

6334  mmap2(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x43447000
[...]
6334  brk(0x80fc9000)                   = 0x80fc9000
6334  mmap2(NULL, 1073741824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = -1 ENOMEM (Cannot allocate memory)

So I'd guess that we simply don't have space to fit 1GB naturally aligned
memory into our address space in the failed case because other allocations
clobber the only spot we can have this on because

 0x00000000 - 0x40000000 reserved because of NULL
 0x40000000 - 0x80000000
 0x80000000 - 0xc0000000 used by brk heap, stack in successful case
 0xc0000000 - end        reserved for kernel

Why do we some times have allocations (and the stack) at 0x4.. while at 0xb..
at other times? I don't know yet ;).


You are receiving this mail because: