#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

Reply via email to