#831: segfault in clone_key_arg
-------------------+--------------------------------------------------------
Reporter: coke | Owner:
Type: bug | Status: new
Priority: major | Milestone:
Component: none | Version: trunk
Severity: fatal | Keywords:
Lang: tcl | Patch:
Platform: |
-------------------+--------------------------------------------------------
With partcl (r526) running against parrot (r40039), the expr.test spec
test dies (very late in the process) with a segfault. Running under gdb, I
have the following information about the segfault:
- occurs after the successful test, expr-32.2
{{{
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6e616d0 (LWP 28524)]
0xb7c5630f in clone_key_arg (interp=0x804f040, st=0xbf94207c)
at src/call/pcc.c:1196
1196 if (key->vtable->base_type != enum_class_Key)
(gdb) bt
#0 0xb7c5630f in clone_key_arg (interp=0x804f040, st=0xbf94207c)
at src/call/pcc.c:1196
#1 0xb7c59956 in Parrot_convert_arg (interp=0x804f040, st=0xbf94207c)
at src/call/pcc.c:1826
#2 0xb7c5a62d in Parrot_process_args (interp=0x804f040, st=0xbf94207c,
param_or_result=PARROT_PASS_PARAMS) at src/call/pcc.c:1703
#3 0xb7c5aba8 in parrot_pass_args (interp=0x804f040, src_ctx=0x1107a288,
dest_ctx=0x10bdbec0, src_indexes=0xb6daa4cc, dest_indexes=0xb6dbd340,
param_or_result=PARROT_PASS_PARAMS) at src/call/pcc.c:1895
#4 0xb7c0282c in Parrot_get_params_pc (cur_opcode=0xb6dbd340,
interp=0x804f040) at src/ops/core.ops:626
#5 0xb7c86250 in runops_slow_core (interp=0x804f040, pc=0xb6dbd340)
at src/runcore/cores.c:462
#6 0xb7c84e4e in runops_int (interp=0x804f040, offset=24429)
at src/runcore/main.c:987
#7 0xb7c5e495 in runops (interp=0x804f040, offs=3) at src/call/ops.c:119
#8 0xb7c5e8a4 in runops_args (interp=0x804f040, sub=0x80c14a8,
obj=0x80b2760,
meth_unused=0x0, sig=0xb7ea6f23 "vP",
ap=0xbf9422ac
"H\021\f\bø\"\224¿\200Éï·¸å\017\bH\021\f\b¨\024\f\bøûì·ø\"\224¿oÀ�...@ð\004\b\002")
at src/call/ops.c:269
#9 0xb7c5f756 in Parrot_runops_fromc_args (interp=0x804f040,
sub=0x80c14a8,
sig=0xb7ea6f23 "vP") at src/call/ops.c:338
#10 0xb7c3c0e7 in Parrot_runcode (interp=0x804f040, argc=2,
argv=0xbf942428)
at src/embed.c:1021
#11 0xb7e7c04f in imcc_run_pbc (interp=0x804f040, obj_file=0,
output_file=0x0,
argc=2, argv=0xbf942428) at compilers/imcc/main.c:801
#12 0xb7e7cc4c in imcc_run (interp=0x804f040, sourcefile=0xbf944410
"tcl.pbc",
argc=2, argv=0xbf942428) at compilers/imcc/main.c:1092
#13 0x08048968 in main (argc=2, argv=0xbf942428) at src/main.c:60
(gdb) l
1191 PMC *key = UVal_pmc(st->val);
1192
1193 if (!key)
1194 return;
1195
1196 if (key->vtable->base_type != enum_class_Key)
1197 return;
1198
1199 for (; key; key = VTABLE_shift_pmc(interp, key)) {
1200 /* register keys have to be cloned */
(gdb) p key
$1 = (PMC *) 0xc1
(gdb) p key->vtable
Cannot access memory at address 0xcd
}}}
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/831>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets