Ticket #831 (closed bug: fixed)

Opened 5 years ago

Last modified 5 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 5 years ago by jkeenan

  • component changed from none to hll_interop

Changed 5 years ago by coke

  • component changed from hll_interop to core

Changed 5 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 5 years ago by coke

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