[devel] q: glibc malloc s*cks?

Michael Shigorin =?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Вт Янв 16 01:37:28 MSK 2007


On Mon, Jan 15, 2007 at 11:33:03PM +0200, sr на altlinux.ru wrote:
> > Скажите sr@, что glibc malloc уже давно использует mmap.
> > См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html
> Агащазблин.

Скажем так -- "умеет использовать mmap", посмотри "Update in 2006:"
по второй ссылке на libc-alpha@ (или в malloc.c@~1480) для
уточнения нынешнего изменения порога между mmap и brk.

> $ echo "int main() { return malloc( 1) ? 0 : 1; }" > 1.c
> $ gcc 1.c
> $ strace ./a.out
[...]
> brk(0)                                  = 0x804a000
> brk(0x806b000)                          = 0x806b000
> exit_group(0)                           = ?
> Process 6119 detached

$ echo "int main() { return malloc( 2000000 ) ? 0 : 1; }" > 2.c
$ gcc 2.c
2.c: In function 'main':
2.c:1: warning: incompatible implicit declaration of built-in function 'malloc'
$ strace ./a.out 
execve("./a.out", ["./a.out"], [/* 71 vars */]) = 0
brk(0)                                  = 0x804a000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f0f000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=135213, ...}) = 0
mmap2(NULL, 135213, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7eed000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\232b\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1171776, ...}) = 0
mmap2(NULL, 1177860, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dcd000
mmap2(0xb7ee7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11a) = 0xb7ee7000
mmap2(0xb7eea000, 10500, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7eea000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dcc000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7dcc6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7ee7000, 4096, PROT_READ)   = 0
munmap(0xb7eed000, 135213)              = 0
mmap2(NULL, 2002944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7be3000
exit_group(0)                           = ?
Process 10194 detached

> $ rpm -q glibc
> glibc-2.5-alt3

ditto, i586

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/



Подробная информация о списке рассылки Devel