Unfortunately, I do not know what this means, so I haven't been able
to extract a simple test case. FWIW, this didn't happen in r11470,
though r11470 has a different problem relating to error handling --
signalling an error corrupts a Sub PMC, trashing its vtable slot.
Any and all hints gratefully accepted.
-- Bob Rogers
http://rgrjr.dyndns.org/
------------------------------------------------------------------------
(gdb) r toy-lisp.pbc
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /usr/src/parrot/parrot toy-lisp.pbc
[New Thread 16384 (LWP 14491)]
[New Thread 32769 (LWP 14492)]
[New Thread 16386 (LWP 14493)]
[New Thread 32771 (LWP 14494)]
* x
Read: X
parrot: src/inter_call.c:899: process_args: Assertion `idx >= 0' failed.
Program received signal SIGABRT, Aborted.
[Switching to Thread 16384 (LWP 14491)]
0x404b5b71 in kill () from /lib/i686/libc.so.6
(gdb) bt
#0 0x404b5b71 in kill () from /lib/i686/libc.so.6
#1 0x40315cf1 in pthread_kill () from /lib/i686/libpthread.so.0
#2 0x4031600b in raise () from /lib/i686/libpthread.so.0
#3 0x404b5904 in raise () from /lib/i686/libc.so.6
#4 0x404b6e8c in abort () from /lib/i686/libc.so.6
#5 0x404aee84 in __assert_fail () from /lib/i686/libc.so.6
#6 0x4009164d in process_args (interpreter=0x8051430, st=0xbffff210,
action=0x4023dbf1 "params", err_check=1) at src/inter_call.c:899
#7 0x40091eec in parrot_pass_args_to_result (interpreter=0x8051430,
sig=0x4025b849 "PS", dest=0x402a93a4, old_ctxp=0x80e5300, ap=0xbffff2f8 "")
at src/inter_call.c:1190
#8 0x401e4b20 in pass_exception_args (interpreter=0x8051430,
sig=0x4025b849 "PS", dest=0x402a93a4, old_ctx=0x80e5300)
at exception_handler.pmc:33
#9 0x401e4d38 in Parrot_Exception_Handler_invoke (interpreter=0x8051430,
pmc=0x82d70a0, ex=0x82d64d0) at exception_handler.pmc:105
#10 0x4008d740 in throw_exception (interpreter=0x8051430, exception=0x82d64d0,
dest=0x402a84bc) at src/exceptions.c:412
#11 0x4010df87 in Parrot_throw_p (cur_opcode=0x402a84b4, interpreter=0x8051430)
at core.ops:706
#12 0x400a16f5 in runops_slow_core (interpreter=0x8051430, pc=0x402a84b4)
at src/runops_cores.c:157
#13 0x4008ef8d in runops_int (interpreter=0x8051430, offset=3788)
at src/interpreter.c:775
#14 0x4009364c in runops (interpreter=0x8051430, offs=3788)
at src/inter_run.c:81
#15 0x40093863 in runops_args (interpreter=0x8051430, sub=0x82379e8,
obj=0x808d750, meth=0x0, sig=0x402443c2 "vP",
ap=0xbffff4ac "¸y#\b\030õÿ¿\220Ò") at src/inter_run.c:180
#16 0x40093967 in Parrot_runops_fromc_args (interpreter=0x8051430,
sub=0x82379e8, sig=0x402443c2 "vP") at src/inter_run.c:274
#17 0x400dcc8c in Parrot_runcode (interpreter=0x8051430, argc=1,
argv=0xbffff568) at src/embed.c:801
#18 0x0804a8d9 in main (argc=1, argv=0xbffff568) at compilers/imcc/main.c:655
(gdb) f 6
#6 0x4009164d in process_args (interpreter=0x8051430, st=0xbffff210,
action=0x4023dbf1 "params", err_check=1) at src/inter_call.c:899
(gdb) p idx
$2 = -1
(gdb) p st->dest.i
$3 = 1
(gdb) p st->dest.sig
$4 = 1
(gdb) p state
$5 = 0
(gdb) p st->named_done
$6 = 134550576
(gdb) p st->first_named
$7 = -1
(gdb) p st->name
$8 = (STRING *) 0x0
(gdb) p st->dest.u.op.pc
$9 = (opcode_t *) 0x402a93ac
(gdb)