Skip to content

Instantly share code, notes, and snippets.

@dogbert17
Last active October 24, 2021 20:34
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/d3fee0f081bb30be355108854faa2f71 to your computer and use it in GitHub Desktop.
Save dogbert17/d3fee0f081bb30be355108854faa2f71 to your computer and use it in GitHub Desktop.
Flapper in t/spec/S12-methods/lastcall.t
Notes: nursery is set to 20k. It seems as if adding MVM_SPESH_OSR_DISABLE=1 makes the problem go away.
dogbert@dogbert-VirtualBox:~/repos/rakudo$ MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 ./rakudo-gdb-m -Ilib --ll-exception t/spec/S12-methods/lastcall.t
================================================================================================
This is Rakudo running in the 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 2021.09.282.g.6.d.45.da.84.c built on MoarVM version 2021.09.676.g.8.c.7.b.734.d.8,
running on linuxmint (20.Ulyana) / linux
Type `bt full` to generate a backtrace if applicable, type `q` to quit or `help` for help.
------------------------------------------------------------------------------------------------
Reading symbols from /home/dogbert/repos/rakudo/install/bin/moar...
Starting program: /home/dogbert/repos/rakudo/install/bin/moar --execname=/home/dogbert/repos/rakudo/rakudo-gdb-m --libpath=/home/dogbert/repos/rakudo --libpath=/home/dogbert/repos/rakudo/blib --libpath=/home/dogbert/repos/rakudo/install/share/nqp/lib /home/dogbert/repos/rakudo/perl6.moarvm -Ilib --ll-exception t/spec/S12-methods/lastcall.t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7208700 (LWP 645189)]
1..7
ok 1 - no lastcall, so we defer up the inheritance tree
ok 2 - sanity test for clearing
ok 3 - lastcall means nextsame causes Nil return of method
ok 4 - lastcall meant nextsame failed, no deferal happened
Can only use manipulate a capture known in this dispatch
at gen/moar/BOOTSTRAP/v6c.nqp:5248 (/home/dogbert/repos/rakudo/install/share/perl6/lib/Perl6/BOOTSTRAP/v6c.moarvm:)
from SETTING::src/core.c/control.pm6:160 (/home/dogbert/repos/rakudo/blib/CORE.c.setting.moarvm:callsame)
from t/spec/S12-methods/lastcall.t:39 (<ephemeral file>:doit)
from t/spec/S12-methods/lastcall.t:46 (<ephemeral file>:)
from t/spec/S12-methods/lastcall.t:38 (<ephemeral file>:<unit>)
from t/spec/S12-methods/lastcall.t:1 (<ephemeral file>:<unit-outer>)
from gen/moar/stage2/NQPHLL.nqp:1943 (/home/dogbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:eval)
from gen/moar/stage2/NQPHLL.nqp:2148 (/home/dogbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:evalfiles)
from gen/moar/stage2/NQPHLL.nqp:2108 (/home/dogbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:command_eval)
from gen/moar/Compiler.nqp:111 (/home/dogbert/repos/rakudo/blib/Perl6/Compiler.moarvm:command_eval)
from gen/moar/stage2/NQPHLL.nqp:2033 (/home/dogbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:command_line)
from gen/moar/rakudo.nqp:127 (/home/dogbert/repos/rakudo/perl6.moarvm:MAIN)
from gen/moar/rakudo.nqp:1 (/home/dogbert/repos/rakudo/perl6.moarvm:<mainline>)
from <unknown>:1 (/home/dogbert/repos/rakudo/perl6.moarvm:<main>)
from <unknown>:1 (/home/dogbert/repos/rakudo/perl6.moarvm:<entry>)
[Thread 0x7ffff7208700 (LWP 645189) exited]
[Inferior 1 (process 645185) exited with code 01]
(gdb) b src/disp/program.c:677
Breakpoint 1 at 0x7ffff790e210: file src/disp/program.c, line 677.
(gdb) r
Starting program: /home/dogbert/repos/rakudo/install/bin/moar --execname=/home/dogbert/repos/rakudo/rakudo-gdb-m --libpath=/home/dogbert/repos/rakudo --libpath=/home/dogbert/repos/rakudo/blib --libpath=/home/dogbert/repos/rakudo/install/share/nqp/lib /home/dogbert/repos/rakudo/perl6.moarvm -Ilib --ll-exception t/spec/S12-methods/lastcall.t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7208700 (LWP 645191)]
1..7
ok 1 - no lastcall, so we defer up the inheritance tree
ok 2 - sanity test for clearing
ok 3 - lastcall means nextsame causes Nil return of method
ok 4 - lastcall meant nextsame failed, no deferal happened
Thread 1 "moar" hit Breakpoint 1, calculate_capture_path (tc=0x55555555ae30, record=0x7ffff722c060, capture=0x5555556b22d8, p=0x7fffffffbcc0) at src/disp/program.c:677
677 MVM_VECTOR_DESTROY(p->path);
(gdb) bt
#0 calculate_capture_path (tc=0x55555555ae30, record=0x7ffff722c060, capture=0x5555556b22d8, p=0x7fffffffbcc0) at src/disp/program.c:677
#1 0x00007ffff790f39d in MVM_disp_program_record_track_arg (tc=0x55555555ae30, capture=0x5555556b22d8, index=0) at src/disp/program.c:889
#2 0x00007ffff791d647 in dispatcher_track_arg_impl (tc=0x55555555ae30, arg_info=...) at src/disp/syscall.c:52
#3 0x00007ffff7919adc in MVM_disp_program_run (tc=0x55555555ae30, dp=0x555559560bc0, record=0x7ffff722c280, spesh_cid=19969, bytecode_offset=128, dp_index=0) at src/disp/program.c:3229
#4 0x00007ffff790b3bc in dispatch_monomorphic (tc=0x55555555ae30, entry_ptr=0x555559564030, seen=0x55555955aad0, id=0x555557953930, callsite=0x55555564fd30, arg_indices=0x7ffff470c2f8,
source=0x555555b43120, sf=0x5555578b2e30, bytecode_offset=128) at src/disp/inline_cache.c:107
#5 0x00007ffff780e603 in MVM_interp_run (tc=0x55555555ae30, initial_invoke=0x7ffff79b9dca <toplevel_initial_invoke>, invoke_data=0x555555621150, outer_runloop=0x0) at src/core/interp.c:5433
#6 0x00007ffff79b9f30 in MVM_vm_run_file (instance=0x55555555a2a0, filename=0x7fffffffe1ed "/home/dogbert/repos/rakudo/perl6.moarvm") at src/moar.c:505
#7 0x0000555555555c97 in main (argc=9, argv=0x7fffffffdd68) at src/main.c:307
(gdb) l
672 if (record->rec.resume_kind != MVMDispProgramRecordingResumeNone) {
673 MVMuint32 cur = MVM_VECTOR_ELEMS(record->rec.resumptions) - 1;
674 if (find_capture(tc, &(record->rec.resumptions[cur].initial_resume_capture), capture, p))
675 return;
676 }
677 MVM_VECTOR_DESTROY(p->path);
678 MVM_exception_throw_adhoc(tc,
679 "Can only use manipulate a capture known in this dispatch");
680 }
681 }
(gdb) p record->rec.resume_kind
$1 = MVMDispProgramRecordingResumeCaller
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7ffff724c440 (LWP 645190) "moar" calculate_capture_path (tc=0x55555555ae30, record=0x7ffff722c060, capture=0x5555556b22d8, p=0x7fffffffbcc0) at src/disp/program.c:677
2 Thread 0x7ffff7208700 (LWP 645191) "spesh optimizer" futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x555555615664) at ../sysdeps/nptl/futex-internal.h:183
(gdb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment