> BTW, if one were trying to port some code that uses brk() directly and
> even frees memory that way, then it seems that with glibc's malloc(), one
> could make it work by instructing malloc() always to use mmap().
> P.S. I am 100% sure that the particular application of mine that started
> me thinking about this, MAGMA, uses its own allocator built on top of
> brk() and never calls malloc() itself.
If you have legacy app, how it comes that it uses mmap? And if I do
not use mmap, I have nothing at 1GB:
void main() { sleep(10); brk((void*)0xBF000000); pause(); }
/proc/`pidof x`/maps says during sleep(10):
08048000-080a1000 r-xp 00000000 03:03 230941 /usr/src/linus/x
080a1000-080a5000 rw-p 00058000 03:03 230941 /usr/src/linus/x
080a5000-080a6000 rwxp 00000000 00:00 0
bffff000-c0000000 rwxp 00000000 00:00 0
and after brk() (which suceeded after I did ulimit -d unlimited
and 'echo 1 >/proc/sys/vm/overcommit_memory') I see:
08048000-080a1000 r-xp 00000000 03:03 230941 /usr/src/linus/x
080a1000-080a5000 rw-p 00058000 03:03 230941 /usr/src/linus/x
080a5000-bf000000 rwxp 00000000 00:00 0
bffff000-c0000000 rwxp 00000000 00:00 0
So maybe MAGMA uses some API which it should not use under any
circumstances... Such as that you linked it with libc6 stdio.
Best regards,
Petr Vandrovec
vandrove@vc.cvut.cz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/