Ticket #831 (closed bug: fixed)

Opened 13 years ago

Last modified 12 years ago

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

Changed 13 years ago by jkeenan

  • component changed from none to hll_interop

Changed 13 years ago by coke

  • component changed from hll_interop to core

Changed 12 years ago by coke

expr.test is no longer segfaulting at test 32.32, but is instead running out of memory at test 46.10.

Changed 12 years ago by coke

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.