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

eval 'class C is D {}' causes assertion failure #391

Closed
p6rt opened this issue Nov 6, 2008 · 13 comments
Closed

eval 'class C is D {}' causes assertion failure #391

p6rt opened this issue Nov 6, 2008 · 13 comments
Labels

Comments

@p6rt
Copy link

p6rt commented Nov 6, 2008

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

Searchable as RT60368$

@p6rt
Copy link
Author

p6rt commented Jul 23, 2008

From @moritz

t/spec/S12-class/declaration-order.t by Carl Mäsak revealed a parrot bug
which can be reproduced with this small sample​:
$ cat eval-bug.t
eval ' class D is C {}';
$ ../../parrot perl6.pbc eval-bug.t
[oops; continuation 0x8c4a228 of type 21 is trying to jump from runloop
549 to r
unloop 110]
src/inter_call.c​:301​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'
Backtrace - Obtained 19 stack frames (max trace depth is 32).
  (unknown)
  Parrot_confess
  Parrot_init_arg_op
  Parrot_init_ret_nci
  (unknown)
  (unknown)
  Parrot_NCI_invoke
  Parrot_invokecc_p
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_runops_fromc_args
  Parrot_runcode
  (unknown)
  imcc_run
  (unknown)
  __libc_start_main
  (unknown)
Aborted

Adding
load_bytecode 'perl6.pbc'
to the PIR coded generated with --target=PIR doesn't reproduce the problem.

This is parrot r29695 (from a fresh make realclean + rebuild) on Debian
Etch, i386 32bit dual core.

Cheers,
Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

@p6rt
Copy link
Author

p6rt commented Jul 26, 2008

From @jnthn

On Wed Jul 23 01​:51​:32 2008, moritz@​casella.verplant.org wrote​:

t/spec/S12-class/declaration-order.t by Carl Mäsak revealed a parrot bug
which can be reproduced with this small sample​:
$ cat eval-bug.t
eval ' class D is C {}';
$ ../../parrot perl6.pbc eval-bug.t
[oops; continuation 0x8c4a228 of type 21 is trying to jump from
runloop 549 to runloop 110]
src/inter_call.c​:301​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'

I got "class D is C {}" (not in an eval) to give a nicer message saying
you can't inherit from a non-existent parent class. But for some reason,
we don't get that with the eval. This may clear up once pdd25cx is
merged, however.

Jonathan

@p6rt
Copy link
Author

p6rt commented Jul 26, 2008

The RT System itself - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented Nov 6, 2008

From @moritz

Hi,

since 2008-11-04 I'm getting this error from
t/spec/S12-class/declaration-order.t​:

$ ../../parrot perl6.pbc t/spec/S12-class/declaration-order.t
1..2
ok 1 - base before derived​: lives
ok 2 - derived before base​: dies
src/inter_call.c​:390​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'
Backtrace - Obtained 32 stack frames (max trace depth is 32).
  (unknown)
  Parrot_confess
  Parrot_init_arg_op
  Parrot_init_ret_nci
  (unknown)
  (unknown)
  Parrot_NCI_invoke
  Parrot_invokecc_p
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_runops_fromc_args
  Parrot_ex_throw_from_c
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_Class_init_pmc
  pmc_new_init
  Parrot_newclass_p_p
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_runops_fromc_args
  Parrot_ex_throw_from_c
  (unknown)
  (unknown)
  (unknown)
  (unknown)

Parrot_Class_init_pmc
Aborted

Moritz
--
Moritz Lenz
http://perlgeek.de/ | http://perl-6.de/ | http://sudokugarden.de/

@p6rt
Copy link
Author

p6rt commented Nov 8, 2008

From @masak

Rakudo r32450​:

$ gdb ../../parrot
GNU gdb 6.3.50-20050815 (Apple version gdb-768) (Tue Oct 2 04​:07​:49 UTC 2007)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin"...Reading symbols for
shared libraries ............. done

(gdb) r perl6.pbc t/spec/S12-class/declaration-order.t
Starting program​: /Users/masak/svn-work/hobbies/parrot/parrot
perl6.pbc t/spec/S12-class/declaration-order.t
Reading symbols for shared libraries
+++++++++++.......................................................................................
done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
1..2
ok 1 - base before derived​: lives
ok 2 - derived before base​: dies
src/inter_call.c​:390​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'
Backtrace - Obtained 32 stack frames (max trace depth is 32).
  Parrot_confess
  Parrot_confess
  Parrot_init_arg_op
  Parrot_init_ret_nci
  Parrot_mmd_add_multi_list_from_c_args
  Parrot_mmd_add_multi_list_from_c_args
  Parrot_NCI_invoke
  Parrot_invokecc_p
  dod_register_pmc
  interpinfo_s
  enable_event_checking
  Parrot_runops_fromc
  Parrot_runops_fromc_args
  Parrot_ex_throw_from_c
  Parrot_ex_throw_from_c_args
  Parrot_class_lookup
  Parrot_class_lookup
  Parrot_Capture_ro_unshift_string
  Parrot_Class_init_pmc
  pmc_new_init
  Parrot_newclass_p_p
  dod_register_pmc
  interpinfo_s
  enable_event_checking
  Parrot_runops_fromc
  Parrot_runops_fromc_args
  Parrot_ex_throw_from_c

Parrot_ex_throw_from_c_args
  Parrot_class_lookup
  Parrot_class_lookup

Parrot_Capture_ro_unshift_string

Parrot_Class_init_pmc

Program received signal SIGABRT, Aborted.
0x92b59b9e in __kill ()
(gdb) bt
#​0 0x92b59b9e in __kill ()
#​1 0x92b59b91 in kill$UNIX2003 ()
#​2 0x92bd0ec2 in raise ()
#​3 0x92be047f in abort ()
#​4 0x0070a5b8 in Parrot_confess (cond=0x9884e9
"PObj_is_PMC_TEST(sig_pmc)", file=0x9884d8 "src/inter_call.c",
line=390) at src/exceptions.c​:509
#​5 0x0071a383 in Parrot_init_arg_op (interp=0xf12d90, ctx=0xfe2190,
pc=0x21d4328, sti=0xbfffdb40) at src/inter_call.c​:390
#​6 0x0071a16e in Parrot_init_ret_nci (interp=0xf12d90, st=0xbfffdb14,
sig=0x9887ec "P") at src/inter_call.c​:312
#​7 0x0072ac49 in set_nci_P (interp=0xf12d90, st=0xbfffdb14,
val=0x29f726c) at src/nci.c​:147
#​8 0x0072b01b in pcf_P_Jt (interp=0xf12d90, self=0x34bd10) at src/nci.c​:237
#​9 0x0083f670 in Parrot_NCI_invoke (interp=0xf12d90, pmc=0x34bd10,
next=0x310dd8) at nci.pmc​:312
#​10 0x006983eb in Parrot_invokecc_p (cur_opcode=0x310dd0,
interp=0xf12d90) at core.ops​:475
#​11 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x310dd0) at
src/runops_cores.c​:222
#​12 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​13 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​14 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x2658cd4,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbfffdd7c
"&#​265;e\002?-?") at src/inter_run.c​:236
#​15 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x2658cd4, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​16 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0x26589c4) at src/exceptions.c​:304
#​17 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​18 0x00755949 in fail_if_type_exists (interp=0xf12d90,
name=0x26589fc) at src/oo.c​:534
#​19 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0x26589fc) at src/oo.c​:565
#​20 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0x2658b84, info=0x2658aa4) at class.pmc​:222
#​21 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0x2658b84, init_data=0x29ca914) at class.pmc​:512
#​22 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​23 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​24 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​25 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​26 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​27 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x29fc784,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbfffe12c
"@​ß\002?-?") at src/inter_run.c​:236
#​28 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x29fc784, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​29 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0x29fc340) at src/exceptions.c​:304
#​30 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​31 0x00755949 in fail_if_type_exists (interp=0xf12d90,
name=0x29fc378) at src/oo.c​:534
#​32 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0x29fc378) at src/oo.c​:565
#​33 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0x29fc51c, info=0x29fc43c) at class.pmc​:222
#​34 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0x29fc51c, init_data=0x29ca914) at class.pmc​:512
#​35 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​36 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​37 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​38 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​39 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​40 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x26bab1c,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbfffe4dc
"4?k\002?-?") at src/inter_run.c​:236
#​41 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x26bab1c, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​42 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0x26b9e34) at src/exceptions.c​:304
#​43 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​44 0x00755949 in fail_if_type_exists (interp=0xf12d90,
name=0x26b9e6c) at src/oo.c​:534
#​45 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0x26b9e6c) at src/oo.c​:565
#​46 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0x26ba3c8, info=0x26ba0b8) at class.pmc​:222
#​47 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0x26ba3c8, init_data=0x29ca914) at class.pmc​:512
#​48 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​49 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​50 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​51 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​52 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​53 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x26c2bd8,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbfffe88c
"\020\tl\002?-?") at src/inter_run.c​:236
#​54 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x26c2bd8, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​55 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0x26c0910) at src/exceptions.c​:304
#​56 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​57 0x00755949 in fail_if_type_exists (interp=0xf12d90,
name=0x26c0948) at src/oo.c​:534
#​58 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0x26c0948) at src/oo.c​:565
#​59 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0x26c23dc, info=0x26c0d1c) at class.pmc​:222
#​60 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0x26c23dc, init_data=0x29ca914) at class.pmc​:512
#​61 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​62 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​63 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​64 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​65 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​66 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x26d5034,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbfffec3c
"d=m\002?-?") at src/inter_run.c​:236
#​67 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x26d5034, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​68 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0x26d3d64) at src/exceptions.c​:304
#​69 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​70 0x00755949 in fail_if_type_exists (interp=0xf12d90,
name=0x26d3ed0) at src/oo.c​:534
#​71 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0x26d3ed0) at src/oo.c​:565
#​72 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0x26d4a4c, info=0x26d418c) at class.pmc​:222
#​73 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0x26d4a4c, init_data=0x29ca914) at class.pmc​:512
#​74 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​75 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​76 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​77 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​78 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​79 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x240f628,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbfffefec
"??@​\002?-?") at src/inter_run.c​:236
#​80 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x240f628, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​81 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0x240e7b8) at src/exceptions.c​:304
#​82 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​83 0x00755949 in fail_if_type_exists (interp=0xf12d90,
name=0x240e7f0) at src/oo.c​:534
#​84 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0x240e7f0) at src/oo.c​:565
#​85 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0x240efd0, info=0x240ea20) at class.pmc​:222
#​86 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0x240efd0, init_data=0x29ca914) at class.pmc​:512
#​87 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​88 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​89 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​90 0x0072106f in runops_int (interp=0xf12d90, offset=3337) at
src/interpreter.c​:938
#​91 0x00721a02 in runops (interp=0xf12d90, offs=3337) at src/inter_run.c​:101
#​92 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x34b46c,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbffff39c
"?7?") at src/inter_run.c​:236
#​93 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x34b46c, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​94 0x0070a2f9 in Parrot_ex_throw_from_c (interp=0xf12d90,
exception=0xe837c4) at src/exceptions.c​:304
#​95 0x0070a3a1 in Parrot_ex_throw_from_c_args (interp=0xf12d90,
ret_addr=0x0, exitcode=20, format=0x98a870 "Class %Ss already
registered!\n") at src/exceptions.c​:371
#​96 0x00755949 in fail_if_type_exists (interp=0xf12d90, name=0xe83888)
at src/oo.c​:534
#​97 0x007559a8 in Parrot_oo_register_type (interp=0xf12d90,
name=0xe83888) at src/oo.c​:565
#​98 0x008ade38 in init_class_from_hash (interp=0xf12d90,
self=0xe83dc8, info=0xe83bd0) at class.pmc​:222
#​99 0x008af8ab in Parrot_Class_init_pmc (interp=0xf12d90,
pmc=0xe83dc8, init_data=0x29ca914) at class.pmc​:512
#​100 0x007610c0 in pmc_new_init (interp=0xf12d90, base_type=50,
init=0x29ca914) at src/pmc.c​:370
#​101 0x006b48ab in Parrot_newclass_p_p (cur_opcode=0x390cac,
interp=0xf12d90) at object.ops​:254
#​102 0x00761b67 in runops_slow_core (interp=0xf12d90, pc=0x390cac) at
src/runops_cores.c​:222
#​103 0x0072106f in runops_int (interp=0xf12d90, offset=17513) at
src/interpreter.c​:938
#​104 0x00721a02 in runops (interp=0xf12d90, offs=17513) at src/inter_run.c​:101
#​105 0x00721ca4 in runops_args (interp=0xf12d90, sub=0x2409f50,
obj=0x1042b78, meth_unused=0x0, sig=0x987aa4 "vP", ap=0xbffff74c "")
at src/inter_run.c​:236
#​106 0x00721dd9 in Parrot_runops_fromc_args (interp=0xf12d90,
sub=0x2409f50, sig=0x987aa4 "vP") at src/inter_run.c​:300
#​107 0x007078dc in Parrot_runcode (interp=0xf12d90, argc=2,
argv=0xbffff858) at src/embed.c​:959
#​108 0x00964279 in imcc_run_pbc (interp=0xf12d90, obj_file=0,
output_file=0x0, argc=2, argv=0xbffff858) at compilers/imcc/main.c​:789
#​109 0x00964d1d in imcc_run (interp=0xf12d90, sourcefile=0xbffff928
"perl6.pbc", argc=2, argv=0xbffff858) at compilers/imcc/main.c​:1077
#​110 0x00001d99 in main (argc=2, argv=0xbffff858) at src/main.c​:61

@p6rt
Copy link
Author

p6rt commented Dec 17, 2008

From @jnthn

On Sat Jul 26 06​:45​:21 2008, jnthn@​jnthn.net wrote​:

On Wed Jul 23 01​:51​:32 2008, moritz@​casella.verplant.org wrote​:

t/spec/S12-class/declaration-order.t by Carl Mäsak revealed a parrot bug
which can be reproduced with this small sample​:
$ cat eval-bug.t
eval ' class D is C {}';
$ ../../parrot perl6.pbc eval-bug.t
[oops; continuation 0x8c4a228 of type 21 is trying to jump from
runloop 549 to runloop 110]
src/inter_call.c​:301​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'

I got "class D is C {}" (not in an eval) to give a nicer message saying
you can't inherit from a non-existent parent class. But for some reason,
we don't get that with the eval. This may clear up once pdd25cx is
merged, however.

I just tried this in today's Rakudo. I suspect pdd25cx did indeed help.

eval 'class D is C {}'; say $!;
Attempt to inherit from non-existent parent class

So resolving ticket.

Thanks,

Jonathan

@p6rt
Copy link
Author

p6rt commented Dec 17, 2008

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

@p6rt
Copy link
Author

p6rt commented Dec 17, 2008

From @moritz

merging into 60368 because it's the same backtrace, and likely the same
underlying parrot issue.

@p6rt
Copy link
Author

p6rt commented Dec 17, 2008

From @moritz

jnthn@​jnthn.net via RT wrote​:

On Sat Jul 26 06​:45​:21 2008, jnthn@​jnthn.net wrote​:

On Wed Jul 23 01​:51​:32 2008, moritz@​casella.verplant.org wrote​:

t/spec/S12-class/declaration-order.t by Carl Mäsak revealed a parrot bug
which can be reproduced with this small sample​:
$ cat eval-bug.t
eval ' class D is C {}';
$ ../../parrot perl6.pbc eval-bug.t
[oops; continuation 0x8c4a228 of type 21 is trying to jump from
runloop 549 to runloop 110]
src/inter_call.c​:301​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'

I got "class D is C {}" (not in an eval) to give a nicer message saying
you can't inherit from a non-existent parent class. But for some reason,
we don't get that with the eval. This may clear up once pdd25cx is
merged, however.

I just tried this in today's Rakudo. I suspect pdd25cx did indeed help.

eval 'class D is C {}'; say $!;

Still fails here.

Another detail​: if i do this in the REPL, it works fine, until I close
the REPL - then I get the same backtrace as before.

Cheers,
Moritz

@p6rt
Copy link
Author

p6rt commented Dec 17, 2008

The RT System itself - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented Dec 18, 2008

From @masak

Another way to cause the crash.

$ ./perl6

class A {};
class A {};
Class A already registered!
src/inter_call.c​:390​: failed assertion 'PObj_is_PMC_TEST(sig_pmc)'
Backtrace - Obtained 32 stack frames (max trace depth is 32).
  (unknown)
  Parrot_confess
  Parrot_init_arg_op
  Parrot_init_ret_nci
  (unknown)
  (unknown)
  Parrot_NCI_invoke
  Parrot_invokecc_p
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_runops_fromc_args
  Parrot_ex_throw_from_c
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_Class_init_pmc
  pmc_new_init
  Parrot_newclass_p_p
  (unknown)
  (unknown)
  (unknown)
  (unknown)
  Parrot_runops_fromc_args
  Parrot_ex_throw_from_c
  (unknown)
  (unknown)
  (unknown)
  (unknown)
 
Parrot_Class_init_pmc
Aborted

@p6rt
Copy link
Author

p6rt commented Feb 27, 2009

From @masak

Cannot reproduce this; resolving.

@p6rt
Copy link
Author

p6rt commented Feb 27, 2009

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

@p6rt p6rt closed this as completed Feb 27, 2009
@p6rt p6rt added the Bug label Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant