Skip to content

Instantly share code, notes, and snippets.

@dogbert17
Created March 30, 2018 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dogbert17/34ca177231cd7c73c5c7ba2757f4f23a to your computer and use it in GitHub Desktop.
Save dogbert17/34ca177231cd7c73c5c7ba2757f4f23a to your computer and use it in GitHub Desktop.
Panic when running t/04-nativecall/11-cpp.t with GC_DEBUG, small nursery and ASAN
dilbert@Linux-Mint18 ~/repos/rakudo $ MVM_JIT_DISABLE=1 ASAN_OPTIONS=detect_leaks=0 ./perl6-gdb-m t/04-nativecall/11-cpp.t
================================================================================================
This is Rakudo Perl 6 running in the GNU debugger, which often allows the user to generate useful back-
traces to debug or report issues in Rakudo, the MoarVM backend or the currently running code.
This Rakudo version is 2018.03.134.g.20495.f.0 built on MoarVM version 2018.03.56.g.85.fc.758,
running on linuxmint (18.3.Sylvia) / linux (4.10.0.38.generic)
Type `bt full` to generate a backtrace if applicable, type `q` to quit or `help` for help.
------------------------------------------------------------------------------------------------
Reading symbols from /home/dilbert/repos/rakudo/nqp/MoarVM/../../install/bin/moar...done.
Starting program: /home/dilbert/repos/rakudo/install/bin/moar --execname=./perl6-gdb-m --libpath=. --libpath=blib --libpath=/home/dilbert/repos/rakudo/install/share/nqp/lib --libpath=/home/dilbert/repos/rakudo/install/share/nqp/lib --libpath=/home/dilbert/repos/rakudo/install/share/nqp/lib /home/dilbert/repos/rakudo/perl6.moarvm --nqp-lib=blib t/04-nativecall/11-cpp.t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
...
(gdb) b MVM_panic
Breakpoint 1 at 0x7ffff5ca30fc: file src/core/exceptions.c, line 827.
(gdb) r
Starting program: /home/dilbert/repos/rakudo/install/bin/moar --execname=./perl6-gdb-m --libpath=. --libpath=blib --libpath=/home/dilbert/repos/rakudo/install/share/nqp/lib --libpath=/home/dilbert/repos/rakudo/install/share/nqp/lib --libpath=/home/dilbert/repos/rakudo/install/share/nqp/lib /home/dilbert/repos/rakudo/perl6.moarvm --nqp-lib=blib t/04-nativecall/11-cpp.t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff25c0700 (LWP 21299)]
Thread 1 "moar" hit Breakpoint 1, MVM_panic (exitCode=1, messageFormat=0x7ffff6122a00 "Adding pointer %p to past fromspace to GC worklist") at src/core/exceptions.c:827
827 void MVM_panic(MVMint32 exitCode, const char *messageFormat, ...) {
(gdb) bt
#0 MVM_panic (exitCode=1, messageFormat=0x7ffff6122a00 "Adding pointer %p to past fromspace to GC worklist") at src/core/exceptions.c:827
#1 0x00007ffff5ebe10a in gc_mark_repr_data (tc=0x61700000fc80, st=0x62f0001144f0, worklist=0x6030005a2980) at src/6model/reprs/CPPStruct.c:633
#2 0x00007ffff5db99f0 in MVM_gc_mark_collectable (tc=0x61700000fc80, worklist=0x6030005a2980, new_addr=0x62f0001144f0) at src/gc/collect.c:408
#3 0x00007ffff5da9f6f in MVM_gc_root_add_gen2s_to_worklist (tc=0x61700000fc80, worklist=0x6030005a2980) at src/gc/roots.c:311
#4 0x00007ffff5db12bb in MVM_gc_collect (tc=0x61700000fc80, what_to_do=0 '\000', gen=0 '\000') at src/gc/collect.c:155
#5 0x00007ffff5d96978 in run_gc (tc=0x61700000fc80, what_to_do=0 '\000') at src/gc/orchestrate.c:407
#6 0x00007ffff5d9740e in MVM_gc_enter_from_allocator (tc=0x61700000fc80) at src/gc/orchestrate.c:524
#7 0x00007ffff5d982f0 in MVM_gc_allocate_nursery (tc=0x61700000fc80, size=32) at src/gc/allocation.c:32
#8 0x00007ffff5d98111 in MVM_gc_allocate (tc=0x61700000fc80, size=32) at src/gc/allocation.h:13
#9 0x00007ffff5d983c4 in MVM_gc_allocate_zeroed (tc=0x61700000fc80, size=32) at src/gc/allocation.c:49
#10 0x00007ffff5d98d0f in MVM_gc_allocate_object (tc=0x61700000fc80, st=0x62f0000007e8) at src/gc/allocation.c:86
#11 0x00007ffff5d4c0d3 in MVM_box_str (tc=0x61700000fc80, value=0x627000062d60, type=0x62300000e178, dst=0x62b0000073c0) at src/core/coerce.c:426
#12 0x00007ffff5cc5dd6 in MVM_interp_run (tc=0x61700000fc80, initial_invoke=0x7ffff6042efe <toplevel_initial_invoke>, invoke_data=0x630000000bc0) at src/core/interp.c:2154
#13 0x00007ffff60432e3 in MVM_vm_run_file (instance=0x61e00000f080, filename=0x7fffffffe2a3 "/home/dilbert/repos/rakudo/perl6.moarvm") at src/moar.c:407
#14 0x0000000000401d8f in main (argc=10, argv=0x7fffffffddf8) at src/main.c:299
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7ffff7fd7780 (LWP 21298) "moar" MVM_panic (exitCode=1, messageFormat=0x7ffff6122a00 "Adding pointer %p to past fromspace to GC worklist") at src/core/exceptions.c:827
2 Thread 0x7ffff25c0700 (LWP 21299) "moar" pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
(gdb) f 1
#1 0x00007ffff5ebe10a in gc_mark_repr_data (tc=0x61700000fc80, st=0x62f0001144f0, worklist=0x6030005a2980) at src/6model/reprs/CPPStruct.c:633
633 MVM_gc_worklist_add(tc, worklist, &map[i].name_map);
(gdb) l
628 MVMint32 i;
629 if (repr_data->name_to_index_mapping) {
630 MVMCPPStructNameMap *map = repr_data->name_to_index_mapping;
631 for (i = 0; map[i].class_key; i++) {
632 MVM_gc_worklist_add(tc, worklist, &map[i].class_key);
633 MVM_gc_worklist_add(tc, worklist, &map[i].name_map);
634 }
635 }
636
637 if (repr_data->flattened_stables) {
(gdb) p MVM_dump_backtrace(tc)
at gen/moar/stage2/QRegex.nqp:1559 (/home/dilbert/repos/rakudo/install/share/nqp/lib/QRegex.moarvm:!cursor_capture)
from src/Perl6/Grammar.nqp:2811 (blib/Perl6/Grammar.moarvm:routine_def)
from <unknown>:1 (blib/Perl6/Grammar.moarvm:routine_declarator:sym<sub>)
from <unknown>:1 (/home/dilbert/repos/rakudo/install/share/nqp/lib/QRegex.moarvm:!protoregex)
from <unknown>:1 (blib/Perl6/Grammar.moarvm:routine_declarator)
from <unknown>:1 (blib/Perl6/Grammar.moarvm:term:sym<routine_declarator>)
from <unknown>:1 (/home/dilbert/repos/rakudo/install/share/nqp/lib/QRegex.moarvm:!protoregex)
from <unknown>:1 (blib/Perl6/Grammar.moarvm:term)
from src/Perl6/Grammar.nqp:4032 (blib/Perl6/Grammar.moarvm:termish)
from gen/moar/stage2/NQPHLL.nqp:931 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:EXPR)
from src/Perl6/Grammar.nqp:4072 (blib/Perl6/Grammar.moarvm:EXPR)
from src/Perl6/Grammar.nqp:1340 (blib/Perl6/Grammar.moarvm:statement)
from src/Perl6/Grammar.nqp:1268 (blib/Perl6/Grammar.moarvm:statementlist)
from gen/moar/stage2/NQPHLL.nqp:1161 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:LANG)
from src/Perl6/Grammar.nqp:1714 (blib/Perl6/Grammar.moarvm:FOREIGN_LANG)
from src/Perl6/Grammar.nqp:1232 (blib/Perl6/Grammar.moarvm:comp_unit)
from src/Perl6/Grammar.nqp:533 (blib/Perl6/Grammar.moarvm:TOP)
from gen/moar/stage2/QRegex.nqp:2309 (/home/dilbert/repos/rakudo/install/share/nqp/lib/QRegex.moarvm:parse)
from gen/moar/stage2/NQPHLL.nqp:1929 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:parse)
from gen/moar/stage2/NQPHLL.nqp:1845 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:execute_stage)
from gen/moar/stage2/NQPHLL.nqp:1878 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:run)
from gen/moar/stage2/NQPHLL.nqp:1881 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:)
from gen/moar/stage2/NQPHLL.nqp:1867 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:compile)
from gen/moar/stage2/NQPHLL.nqp:1567 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:eval)
from gen/moar/stage2/NQPHLL.nqp:1822 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:evalfiles)
from gen/moar/stage2/NQPHLL.nqp:1714 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:command_eval)
from src/Perl6/Compiler.nqp:42 (blib/Perl6/Compiler.moarvm:command_eval)
from gen/moar/stage2/NQPHLL.nqp:1673 (/home/dilbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:command_line)
from gen/moar/main.nqp:47 (/home/dilbert/repos/rakudo/perl6.moarvm:MAIN)
from gen/moar/main.nqp:38 (/home/dilbert/repos/rakudo/perl6.moarvm:<mainline>)
from <unknown>:1 (/home/dilbert/repos/rakudo/perl6.moarvm:<main>)
from <unknown>:1 (/home/dilbert/repos/rakudo/perl6.moarvm:<entry>)
$1 = void
(gdb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment