Ticket #1129 (closed bug: fixed)
segfault in clone_key_arg (due to pcc refactor)
Reported by: | coke | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | none | Version: | trunk |
Severity: | medium | Keywords: | |
Cc: | Language: | ||
Patch status: | Platform: |
Description
using parrot and partcl latest, partcl fails t/cmd_for.t as Parrot_run_meth_fromc_args_reti has been removed. chromatic++ suggested that Parrot_call_method_ret_int is the replacement (from src/extend.c)
Applying this patch to partcl:
diff --git a/src/pmc/tclstring.pmc b/src/pmc/tclstring.pmc index 4f73589..abe989d 100644 --- a/src/pmc/tclstring.pmc +++ b/src/pmc/tclstring.pmc @@ -43,7 +43,7 @@ pmclass TclString PMC * const method = Parrot_oo_find_vtable_override_for_class(interp, _ class, get_bool); if (!PMC_IS_NULL(method)) { - return (INTVAL)Parrot_run_meth_fromc_args_reti(interp, method, SELF , get_bool, "I"); + return Parrot_call_method_ret_int(interp, method, SELF, get_bool, " ->I"); } else { return -9999; // This should never happen. }
parrot instead segfaults in clone_key_arg with the following backtrace:
#0 0x00007fcfa5c3d10c in clone_key_arg (interp=0x165e010, key=0x167ef60) at src/call/args.c:2724 #1 0x00007fcfa5c3d508 in Parrot_pcc_build_sig_object_from_varargs ( interp=0x165e010, obj=0x177c8b8, sig=0x18e0cd0 "Pi->I", args=0x7fffae2055f0) at src/call/args.c:914 #2 0x00007fcfa5c2cd5a in Parrot_call_method_ret_int (interp=0x165e010, sub_pmc=0x177dc90, obj=0x177c8b8, method=<value optimized out>, signature=0x7fcfa3406ffc "->I") at src/extend.c:1320 #3 0x00007fcfa5beafa3 in Parrot_unless_p_ic (cur_opcode=0x7fcfa60c5c80, interp=0x165e010) at src/ops/core.ops:373 #4 0x00007fcfa5c672a0 in runops_fast_core (interp=0x165e010, runcore=<value optimized out>, pc=0x7fcfa60c5c80) at src/runcore/cores.c:665 #5 0x00007fcfa5c665f1 in runops_int (interp=0x165e010, offset=0) at src/runcore/main.c:545 #6 0x00007fcfa5c3f5f1 in runops (interp=0x165e010, offs=<value optimized out>) at src/call/ops.c:97 #7 0x00007fcfa5c39bcb in Parrot_pcc_invoke_from_sig_object (interp=0x165e010, sub_obj=<value optimized out>, call_object=<value optimized out>) at src/call/pcc.c:243 #8 0x00007fcfa5c39ca4 in Parrot_pcc_invoke_sub_from_c_args (interp=0x165e010, sub_obj=0x177a158, sig=<value optimized out>) at src/call/pcc.c:66 #9 0x0000000000400d2b in main (argc=2, argv=0x7fffae2059e8) at tcl.c:444
Change History
Note: See
TracTickets for help on using
tickets.