I now get this fatal in the testsuite (x86_64 with rtldebug):
Doing tests in testsuite (11311 tests) Testing scoped variables 255:1... Testing scoped variables 256:1 expecting a compilation error... Testing scoped variables 16:17... Testing scoped variables 17:16... test 578, line 3250 Testing vtables and scope access. 1:2 2:6 3:20 4:73 5:280 6:1118 7:4590 8:19279 /home/mast/Pike/git/src/threads.c:515: Fatal error: exit_threads_disable() called too many times! Backtrace at time of fatal: src/threads.c:2578: unknown function() testsuite:59: testsuite()->__class_313106_0_line_5()->thread_disabler() Aborted (core dumped)
(gdb) bt #0 0x00002b524301ba75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00002b524301f5c0 in *__GI_abort () at abort.c:92 #2 0x0000000000571eed in debug_va_fatal ( fmt=0x984ce8 "exit_threads_disable() called too many times!\n", args=0x2b5246932c70) at /home/mast/Pike/git/src/error.c:644 #3 0x0000000000571fb0 in debug_fatal ( fmt=0x984ce8 "exit_threads_disable() called too many times!\n") at /home/mast/Pike/git/src/error.c:651 #4 0x00000000006ea306 in exit_threads_disable (o=0x35219b0) at /home/mast/Pike/git/src/threads.c:515 #5 0x0000000000687bd6 in compat_event_handler (e=1) at /home/mast/Pike/git/src/program.c:3823 #6 0x000000000062cb85 in destruct_object (o=0x35219b0, reason=DESTRUCT_NO_REFS) at /home/mast/Pike/git/src/object.c:869 #7 0x000000000062d90d in schedule_really_free_object (o=0x35219b0) at /home/mast/Pike/git/src/object.c:1044 #8 0x00000000007514d4 in really_free_svalue (s=0x2b5246053030) at /home/mast/Pike/git/src/svalue.c:129 #9 0x00000000004951c7 in eval_instruction_without_debug (pc=0x3434b03 "R\037\t\034\v\262") at /home/mast/Pike/git/src/interpret_functions.h:527 #10 0x00000000004a746e in eval_instruction (pc=0x3434acc "R\037\t\034\b\262") at /home/mast/Pike/git/src/interpret.c:1544 #11 0x00000000004b1014 in mega_apply (type=APPLY_STACK, args=1, arg1=0x0, arg2=0x0) at /home/mast/Pike/git/src/interpret.c:2213 #12 0x00000000004b1299 in f_call_function (args=1) at /home/mast/Pike/git/src/interpret.c:2266 #13 0x00000000006ec890 in new_thread_func (data=0x7fffe5589170) at /home/mast/Pike/git/src/threads.c:1111 #14 0x00002b5242b979ca in start_thread (arg=<value optimized out>) at pthread_create.c:300 #15 0x00002b52430ce6cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #16 0x0000000000000000 in ?? ()
Git bisect pins it on:
commit d4b72bd Author: Henrik Grubbström (Grubba) grubba@grubba.org Date: Thu Jul 1 11:25:18 2010 +0000
Allocate object storage with xcalloc() to reduce the amount of work for call_c_initializers().
Fixed. The reason was that I skipped calling the initializers if there wasn't any storage.
pike-devel@lists.lysator.liu.se