From: Garrett C. <yan...@gm...> - 2010-12-08 09:03:01
|
On Mon, Dec 6, 2010 at 11:36 PM, <ca...@re...> wrote: > >From http://lkml.org/lkml/2009/10/2/85: > > On ia64, the following test program exit abnormally, because glibc > thread library called abort(). > > ======================================================== > (gdb) bt > #0 0xa000000000010620 in __kernel_syscall_via_break () > #1 0x20000000003208e0 in raise () from /lib/libc.so.6.1 > #2 0x2000000000324090 in abort () from /lib/libc.so.6.1 > #3 0x200000000027c3e0 in __deallocate_stack () from > /lib/libpthread.so.0 > #4 0x200000000027f7c0 in start_thread () from /lib/libpthread.so.0 > #5 0x200000000047ef60 in __clone2 () from /lib/libc.so.6.1 > ======================================================== > The fact is, glibc call munmap() when thread exitng time for freeing > stack, and it assume munlock() never fail. However, munmap() often make > vma splitting and it with many mapcount make -ENOMEM. > > Oh well, stack unfreeing is not reasonable option. Also munlock() via > free() shouldn't failed. > > Thus, munmap() shoudn't check max-mapcount. Committed. |