Le 20/11/2015 15:42, John Paul Adrian Glaubitz a écrit : > On 11/20/2015 03:34 PM, Andreas Schwab wrote: >> John Paul Adrian Glaubitz <glaub...@physik.fu-berlin.de> writes: >> >>> Now, running this with strace, I made a suspicious observation which >>> might be related to the the segmentation fault: >>> >>> prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, >>> rlim_max=RLIM64_INFINITY}) = 0 >>> --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xef79c0d8} --- >> >> Why do you think there is any relation between these two events? > > I was guessing. I don't really know. > > If you have any idea how to properly debug the issue, I would be very > glad. > > Without the debug symbols, this is what gdb shows: > > root@pacman:~> gdb /usr/bin/ruby2.2 > GNU gdb (Debian 7.10-1) 7.10 > Copyright (C) 2015 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "m68k-linux-gnu". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > For help, type "help". > Type "apropos word" to search for commands related to "word"... > Reading symbols from /usr/bin/ruby2.2...(no debugging symbols found)...done. > (gdb) r > Starting program: /usr/bin/ruby2.2 > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/m68k-linux-gnu/libthread_db.so.1". > > Program received signal SIGSEGV, Segmentation fault. > 0xc01cc0ac in reserve_stack (limit=0xef8000d8 "", size=8384256) at > thread_pthread.c:690 > 690 thread_pthread.c: No such file or directory. > (gdb) bt > #0 0xc01cc0ac in reserve_stack (limit=0xef8000d8 "", size=8384256) at > thread_pthread.c:690 > #1 0xc01ce9ec in ruby_init_stack (addr=0xeffff680) at thread_pthread.c:719 > #2 0x8000071a in ?? () > #3 0xeffff680 in ?? () > #4 0xeffff68c in ?? () > #5 0xeffff690 in ?? () > #6 0x00000000 in ?? () > (gdb)
If google give me the good source version, https://github.com/brightbox/deb-ruby2.2/blob/master/thread_pthread.c 685 else { 686 limit -= size; 687 if (buf > limit) { 688 limit = alloca(buf - limit); 689 limit -= stack_check_margin; 690 limit[0] = 0; 691 } 692 } It is playing with stack and it fails... perhaps a m68k specific bug. Laurent