Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crashing parrot when calling create_lexinfo #288

Closed
p6rt opened this issue Sep 1, 2008 · 6 comments
Closed

crashing parrot when calling create_lexinfo #288

p6rt opened this issue Sep 1, 2008 · 6 comments

Comments

@p6rt
Copy link

p6rt commented Sep 1, 2008

Migrated from rt.perl.org#58488 (status was 'resolved')

Searchable as RT58488$

@p6rt
Copy link
Author

p6rt commented Sep 1, 2008

From @cognominal

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

@p6rt
Copy link
Author

p6rt commented Feb 4, 2009

@coke - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented Sep 12, 2009

From @coke

Can someone verify this against a recent rakudo?
--
Will "Coke" Coleda

@p6rt
Copy link
Author

p6rt commented Jul 23, 2010

From @coke

On Mon Sep 01 10​:19​:19 2008, cognominal wrote​:

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

With an Altanta-era rakudo, this works fine​:

$ cat foo.p6
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();';
say "alive";
$ ./perl6 foo.p6
alive

Assigning ticket to moritz in case he can wishes to add this as a test.

Thanks for the report!

--
Will "Coke" Coleda

@p6rt
Copy link
Author

p6rt commented Jul 24, 2010

@moritz - Status changed from 'open' to 'resolved'

@p6rt p6rt closed this as completed Jul 24, 2010
@p6rt
Copy link
Author

p6rt commented Jul 24, 2010

From @kyleha

This is an automatically generated mail to inform you that tests are now available in t/spec/S02-names_and_variables/names.t

commit b588d7cad299f00f47d1bdc87dceae7cbfcc45ba
Author​: moritz <moritz@​c213334d-75ef-0310-aa23-eaa082d1ae64>
Date​: Sat Jul 24 15​:28​:58 2010 +0000

  [t/spec] test for RT #​58488, multiple redefinition of same class in eval
 
  git-svn-id​: http://svn.pugscode.org/pugs@&#8203;31805 c213334d-75ef-0310-aa23-eaa082d1ae64

Inline Patch
diff --git a/t/spec/S02-names_and_variables/names.t b/t/spec/S02-names_and_variables/names.t
index b72580e..a260b8e 100644
--- a/t/spec/S02-names_and_variables/names.t
+++ b/t/spec/S02-names_and_variables/names.t
@@ -2,7 +2,7 @@ use v6;
 
 use Test;
 
-plan 23;
+plan 24;
 
 # I'm using semi-random nouns for variable names since I'm tired of foo/bar/baz and alpha/beta/...
 
@@ -79,9 +79,13 @@ plan 23;
 
 # RT #74276
 # Rakudo had troubles with names starting with Q
-{
-    eval_lives_ok 'class Quox { }; Quox.new', 'class names can start with Q';
+eval_lives_ok 'class Quox { }; Quox.new', 'class names can start with Q';
 
-}
+# RT #58488 
+lives_ok {
+    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();';
+}, 'can redefine a class in eval multiple times without permanent damange';
 
 # vim: ft=perl6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant