# 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