# New Ticket Created by Stephane Payrard # Please include the string: [perl #58488] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58488 >
One can crash calling rakudo on a file containing eval 'class A { has $.a}; my $a = A.new();'; eval 'class A { has $.a}; my $a = A.new();'; eval 'class A { has $.a}; my $a = A.new();'; or by executing thrice the line class A { has $.a}; my $a = A.new() interactively in rakudo. This is reproduceable on Mac OS X Leopard and cygwin. The stack seems strange to me, it seems that the context of the eval is left on the stack when it should not as a result we have many runloops in the stack. The stack trace is : Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000008 Crashed Thread: 0 Thread 0 Crashed: 0 libparrot.dylib 0x00702c4d create_lexinfo + 317 (pbc.c:993) 1 libparrot.dylib 0x007033c2 add_const_pmc_sub + 1202 (pbc.c:1193) 2 libparrot.dylib 0x0070485a e_pbc_emit + 570 (pbc.c:1865) 3 libparrot.dylib 0x006f9397 emit_flush + 199 (instructions.c:869) 4 libparrot.dylib 0x006f3c7e imc_compile_unit + 62 (imc.c:118) 5 libparrot.dylib 0x006f3dce imc_close_unit + 30 (imc.c:223) 6 libparrot.dylib 0x006e8128 yyparse + 3208 (imcc.y:718) 7 libparrot.dylib 0x006f39b5 compile_string + 197 (imcc.l:1342) 8 libparrot.dylib 0x00706ed7 imcc_compile + 519 (parser_util.c:802) 9 libparrot.dylib 0x007071ee imcc_compile_pir_ex + 46 (parser_util.c:986) 10 libparrot.dylib 0x00540ac8 pcf_P_Jt + 120 (nci.c:235) 11 libparrot.dylib 0x0062f340 Parrot_NCI_invoke + 176 (nci.pmc:310) 12 libparrot.dylib 0x004be05b Parrot_invokecc_p + 107 (core.ops:463) 13 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 14 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 15 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 16 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 17 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 18 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 19 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 20 libparrot.dylib 0x005f940f cant_do_method + 79 (default.pmc:63) 21 libparrot.dylib 0x005fc089 Parrot_default_get_string + 41 (default.c:1345) 22 libparrot.dylib 0x00569e26 fail_if_type_exists + 166 (oo.c:619) 23 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 24 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 25 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 26 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 27 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 28 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 29 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 30 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 31 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 32 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 33 libparrot.dylib 0x0056b6e0 run_sub + 112 (packfile.c:496) 34 libparrot.dylib 0x0056b935 do_1_sub_pragma + 565 (packfile.c:589) 35 libparrot.dylib 0x0056bbb1 do_sub_pragmas + 289 (packfile.c:722) 36 libparrot.dylib 0x005701c9 PackFile_fixup_subs + 41 (packfile.c:3812) 37 libparrot.dylib 0x00706f46 imcc_compile + 630 (parser_util.c:822) 38 libparrot.dylib 0x007071ee imcc_compile_pir_ex + 46 (parser_util.c:986) 39 libparrot.dylib 0x00540ac8 pcf_P_Jt + 120 (nci.c:235) 40 libparrot.dylib 0x0062f340 Parrot_NCI_invoke + 176 (nci.pmc:310) 41 libparrot.dylib 0x004be05b Parrot_invokecc_p + 107 (core.ops:463) 42 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 43 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 44 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 45 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 46 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 47 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 48 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 49 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 50 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 51 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 52 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 53 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 54 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 55 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 56 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 57 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 58 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 59 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 60 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 61 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 62 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 63 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 64 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 65 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 66 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 67 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 68 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 69 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 70 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 71 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 72 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 73 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 74 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 75 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 76 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 77 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 78 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 79 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 80 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 81 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 82 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 83 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 84 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 85 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 86 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 87 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 88 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 89 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 90 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 91 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 92 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 93 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 94 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 95 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 96 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 97 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 98 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 99 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 100 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 101 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 102 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 103 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 104 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 105 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 106 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 107 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 108 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 109 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 110 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 111 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 112 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 113 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 114 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 115 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 116 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 117 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 118 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 119 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 120 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 121 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 122 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 123 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 124 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 125 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 126 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 127 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 128 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 129 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 130 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 131 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 132 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 133 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 134 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 135 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 136 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 137 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 138 libparrot.dylib 0x0052348c Parrot_ex_throw_from_c + 444 (exceptions.c:297) 139 libparrot.dylib 0x00523563 Parrot_ex_throw_from_c_args + 195 (exceptions.c:339) 140 libparrot.dylib 0x00569e5e fail_if_type_exists + 222 (oo.c:623) 141 libparrot.dylib 0x00569ec8 Parrot_oo_register_type + 24 (oo.c:653) 142 libparrot.dylib 0x0067ccf8 init_class_from_hash + 584 (class.pmc:222) 143 libparrot.dylib 0x0067e74b Parrot_Class_init_pmc + 555 (class.c:844) 144 libparrot.dylib 0x005757d0 pmc_new_init + 176 (pmc.c:369) 145 libparrot.dylib 0x004d395b Parrot_newclass_p_p + 59 (object.ops:249) 146 libparrot.dylib 0x005761a7 runops_slow_core + 183 (runops_cores.c:222) 147 libparrot.dylib 0x00536d4f runops_int + 447 (interpreter.c:942) 148 libparrot.dylib 0x005376d2 runops + 194 (inter_run.c:105) 149 libparrot.dylib 0x00537974 runops_args + 436 (inter_run.c:237) 150 libparrot.dylib 0x00537aa9 Parrot_runops_fromc_args + 73 (inter_run.c:300) 151 libparrot.dylib 0x00520b0c Parrot_runcode + 764 (embed.c:952) 152 libparrot.dylib 0x006f5779 imcc_run_pbc + 265 (main.c:784) 153 libparrot.dylib 0x006f621d imcc_run + 861 (main.c:1073) 154 parrot 0x00001fb9 main + 185 (main.c:61) 155 parrot 0x00001ec6 start + 54 -- cognominal stef