Skip to content

Instantly share code, notes, and snippets.

@MasterDuke17
Last active February 23, 2021 20:24
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 MasterDuke17/554414c59b87fdee869d26e9926bdca6 to your computer and use it in GitHub Desktop.
Save MasterDuke17/554414c59b87fdee869d26e9926bdca6 to your computer and use it in GitHub Desktop.
[dan@alexandria perl6]$ gdb --args ./install/bin/raku -e 'my %h = a => 42, b => 666; my $b; $b := %h<a>:exists for ^10_000_000;'
GNU gdb (GDB) 10.1
Copyright (C) 2020 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 "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://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 ./install/bin/raku...
(gdb) b MVM_6model_try_cache_type_check
Function "MVM_6model_try_cache_type_check" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (MVM_6model_try_cache_type_check) pending.
(gdb) r
Starting program: /home/dan/Source/perl6/install/bin/raku -e my\ %h\ =\ a\ =\>\ 42,\ b\ =\>\ 666\;\ my\ \$b\;\ \$b\ :=\ %h\<a\>:exists\ for\ \^10_000_000\;
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff6de3640 (LWP 1030274)]
[Switching to Thread 0x7ffff6de3640 (LWP 1030274)]
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f508, type=0x55555754f358, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb) continue
Continuing.
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f220, type=0x55555754f220, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb)
Continuing.
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f2c8, type=0x55555754f370, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb)
Continuing.
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f538, type=0x55555754f538, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb) p STABLE(type)->debug_name
$1 = 0x55555756df60 "Str"
(gdb) continue
Continuing.
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f2c8, type=0x55555754f1c0, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb) p STABLE(type)->debug_name
$2 = 0x55555757fed0 "Any"
(gdb) continue
Continuing.
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f538, type=0x55555754f1c0, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb) p STABLE(type)->debug_name
$3 = 0x55555757fed0 "Any"
(gdb) continue
Continuing.
Thread 2 "spesh optimizer" hit Breakpoint 1, MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f220, type=0x555557626fe8, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
11 return !check || check == tc->instance->VMNull;
(gdb) p STABLE(type)->debug_name
$4 = 0x5555576c6440 "Bool(Any)"
(gdb) info threads
Id Target Id Frame
1 Thread 0x7ffff7227740 (LWP 1030267) "raku" MVM_interp_run (tc=0x55555555a0b0, initial_invoke=0x8, initial_invoke@entry=0x7ffff79a0980 <toplevel_initial_invoke>, invoke_data=0x8,
invoke_data@entry=0x7ffff79a0980 <toplevel_initial_invoke>, outer_runloop=0x5555555be520, outer_runloop@entry=0x0) at src/core/interp.c:1828
* 2 Thread 0x7ffff6de3640 (LWP 1030274) "spesh optimizer" MVM_6model_try_cache_type_check (tc=tc@entry=0x5555555f49f0, obj=0x55555754f220, type=0x555557626fe8, result=result@entry=0x7ffff6de26fc) at src/6model/reprs/MVMNull.h:11
(gdb) del 1
(gdb) thread 1
[Switching to thread 1 (Thread 0x7ffff7227740 (LWP 1030267))]
#0 MVM_interp_run (tc=0x55555555a0b0, initial_invoke=0x8, initial_invoke@entry=0x7ffff79a0980 <toplevel_initial_invoke>, invoke_data=0x8, invoke_data@entry=0x7ffff79a0980 <toplevel_initial_invoke>, outer_runloop=0x5555555be520,
outer_runloop@entry=0x0) at src/core/interp.c:1828
1828 GET_REG(cur_op, 0).i64 = MVM_is_null(tc, obj);
(gdb) bt
#0 MVM_interp_run (tc=0x55555555a0b0, initial_invoke=0x8, initial_invoke@entry=0x7ffff79a0980 <toplevel_initial_invoke>, invoke_data=0x8, invoke_data@entry=0x7ffff79a0980 <toplevel_initial_invoke>, outer_runloop=0x5555555be520,
outer_runloop@entry=0x0) at src/core/interp.c:1828
#1 0x00007ffff79a1ae4 in MVM_vm_run_file (instance=instance@entry=0x555555559590, filename=filename@entry=0x555555559520 "/home/dan/Source/perl6/install/share/perl6/runtime/perl6.moarvm") at src/moar.c:504
#2 0x00005555555557c4 in main (argc=<optimized out>, argv=0x7fffffffe388) at src/vm/moar/runner/main.c:472
(gdb) call MVM_dump_backtrace(tc)
at SETTING::src/core.c/hash_slice.pm6:21 (/home/dan/Source/perl6/install/share/perl6/runtime/CORE.c.setting.moarvm:postcircumfix:<{ }>)
from -e:1 (<ephemeral file>:)
from -e:1 (<ephemeral file>:<unit>)
from -e:1 (<ephemeral file>:<unit-outer>)
from gen/moar/stage2/NQPHLL.nqp:1946 (/home/dan/Source/perl6/install/share/nqp/lib/NQPHLL.moarvm:eval)
from gen/moar/stage2/NQPHLL.nqp:2056 (/home/dan/Source/perl6/install/share/nqp/lib/NQPHLL.moarvm:)
from gen/moar/stage2/NQPHLL.nqp:2055 (/home/dan/Source/perl6/install/share/nqp/lib/NQPHLL.moarvm:command_eval)
from gen/moar/Compiler.nqp:109 (/home/dan/Source/perl6/install/share/perl6/lib/Perl6/Compiler.moarvm:command_eval)
from gen/moar/stage2/NQPHLL.nqp:2036 (/home/dan/Source/perl6/install/share/nqp/lib/NQPHLL.moarvm:command_line)
from gen/moar/rakudo.nqp:127 (/home/dan/Source/perl6/install/share/perl6/runtime/perl6.moarvm:MAIN)
from gen/moar/rakudo.nqp:1 (/home/dan/Source/perl6/install/share/perl6/runtime/perl6.moarvm:<mainline>)
from <unknown>:1 (/home/dan/Source/perl6/install/share/perl6/runtime/perl6.moarvm:<main>)
from <unknown>:1 (/home/dan/Source/perl6/install/share/perl6/runtime/perl6.moarvm:<entry>)
(gdb) call MVM_dump_bytecode(tc)
00000 checkarity 2, 2
00001 param_rp_o loc_4_obj, 0
00002 hllize loc_7_obj, loc_4_obj
00003 set loc_4_obj, loc_7_obj
00004 decont loc_7_obj, loc_4_obj
00005 set loc_12_obj, loc_7_obj
00006 wval loc_7_obj, 2, 24
00007 istype loc_8_int, loc_12_obj, loc_7_obj
00008 assertparamcheck loc_8_int
00009 set loc_1_obj, loc_4_obj
00010 param_rp_o loc_5_obj, 1
00011 hllize loc_7_obj, loc_5_obj
00012 set loc_5_obj, loc_7_obj
00013 decont loc_7_obj, loc_5_obj
00014 set loc_13_obj, loc_7_obj
00015 wval loc_7_obj, 2, 24
00016 istype loc_8_int, loc_13_obj, loc_7_obj
00017 assertparamcheck loc_8_int
00018 set loc_2_obj, loc_5_obj
00019 param_rn_o loc_6_obj, 'exists'
00020 hllize loc_7_obj, loc_6_obj
00021 set loc_6_obj, loc_7_obj
00022 decont loc_7_obj, loc_6_obj
00023 set loc_14_obj, loc_7_obj
00024 wval loc_7_obj, 0, 6614
00025 istype loc_8_int, loc_14_obj, loc_7_obj
00026 -> assertparamcheck loc_8_int
00027 decont loc_7_obj, loc_6_obj
00028 wval loc_11_obj, 2, 49
00029 istype loc_8_int, loc_7_obj, loc_11_obj
00030 if_i loc_8_int, label_1(00041)
00031 wval loc_11_obj, 0, 6620
00032 wval loc_7_obj, 0, 6614
00033 decont loc_16_obj, loc_11_obj
00034 findmeth loc_15_obj, loc_16_obj, 'coerce'
00035 prepargs Callsite_0
00036 arg_o 0, loc_11_obj
00037 arg_o 1, loc_7_obj
00038 arg_o 2, loc_6_obj
00039 invoke_o loc_15_obj, loc_15_obj
00040 set loc_6_obj, loc_15_obj
label_1:
00041 decont loc_15_obj, loc_6_obj
00042 set loc_3_obj, loc_15_obj
00043 paramnamesused
annotation: SETTING::src/core.c/hash_slice.pm6:21
00044 takedispatcher loc_7_obj
00045 isnull loc_8_int, loc_7_obj
00046 if_i loc_8_int, label_2(00048)
00047 bindlex lex_Frame_4999_lex7_obj, loc_7_obj
annotation: SETTING::src/core.c/hash_slice.pm6:22
label_2:
00048 decont loc_9_obj, loc_1_obj
00049 findmeth loc_7_obj, loc_9_obj, 'EXISTS-KEY'
00050 prepargs Callsite_1
00051 arg_o 0, loc_1_obj
00052 arg_o 1, loc_2_obj
00053 invoke_o loc_7_obj, loc_7_obj
00054 hllize loc_7_obj, loc_7_obj
00055 set loc_0_obj, loc_7_obj
annotation: SETTING::src/core.c/hash_slice.pm6:23
00056 decont loc_11_obj, loc_3_obj
00057 unless_o loc_11_obj, label_3(00060)
00058 set loc_9_obj, loc_0_obj
00059 goto label_4(00067)
label_3:
00060 const_s loc_10_str, '&prefix:<!>'
00061 getlexstatic_o loc_7_obj, loc_10_str
00062 decont loc_7_obj, loc_7_obj
00063 prepargs Callsite_2
00064 arg_o 0, loc_0_obj
00065 invoke_o loc_7_obj, loc_7_obj
00066 set loc_9_obj, loc_7_obj
label_4:
00067 return_o loc_9_obj
(gdb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment