Ticket #831 (closed bug: fixed)
segfault in clone_key_arg
| Reported by: | coke | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | core | Version: | trunk |
| Severity: | fatal | Keywords: | |
| Cc: | Language: | tcl | |
| Patch status: | Platform: |
Description
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
Change History
Note: See
TracTickets for help on using
tickets.
