[perl #60206] [BUG] [MMD] Segfault in Lua exception handler

François PERRAD via RT bugs-parrot-track at netlabs.develooper.com
Fri Dec 12 13:52:29 UTC 2008


The following back trace shows that throwing an exception from C 
dosen't work.
The addition (true + 42) is handled in luaany.pmc by 
MULTI PMC* add(DEFAULT value, PMC *dest)
which performs a call :
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
  "attempt to perform arithmetic on a %Ss value", SELF.name());
... and segfault

Program received signal SIGSEGV, Segmentation fault.
0x686f9081 in clone_key_arg (interp=0x3f4150, st=0x22d8ac)
    at src/inter_call.c:972
972         if (key->vtable->base_type != enum_class_Key)
(gdb) bt
#0  0x686f9081 in clone_key_arg (interp=0x3f4150, st=0x22d8ac)
    at src/inter_call.c:972
#1  0x686fa006 in Parrot_convert_arg (interp=0x3f4150, st=0x22d8ac)
    at src/inter_call.c:1585
#2  0x686f9bd3 in Parrot_process_args (interp=0x3f4150, st=0x22d8ac,
    param_or_result=PARROT_PASS_PARAMS) at src/inter_call.c:1457
#3  0x686fa194 in parrot_pass_args (interp=0x3f4150, src_ctx=0xdd3f90,
    dest_ctx=0x10868f0, src_indexes=0xa5326c, dest_indexes=0x22d994,
    param_or_result=PARROT_PASS_PARAMS) at src/inter_call.c:1651
#4  0x70403104 in Parrot_Lua_nci_traceback (interp=0x3f4150, pmc=0x9c5ee8)
    at
C:/fperrad/Parrot/trunk/tools/build/../../lib/Parrot/Pmc2c/PCCMETHOD.pm:4
48
#5  0x68870843 in Parrot_NCI_invoke (interp=0x3f4150, pmc=0x9c5ee8,
    next=0xa53294) at src/pmc/nci.pmc:321
#6  0x6869f450 in Parrot_callmethodcc_p_sc (cur_opcode=0xa53288,
    interp=0x3f4150) at src/ops/object.ops:81
#7  0x6873a705 in runops_slow_core (interp=0x3f4150, pc=0xa53288)
    at src/runops_cores.c:222
#8  0x686fe777 in runops_int (interp=0x3f4150, offset=1659)
    at src/interpreter.c:938
#9  0x686fef8c in runops (interp=0x3f4150, offs=1659) at src/inter_run.c:103
#10 0x686ff217 in runops_args (interp=0x3f4150, sub=0x9aab48, obj=0x9a4588,
    meth_unused=0x0, sig=0x689ea410 "vP", ap=0x22db38 "+\235\232")
    at src/inter_run.c:240
#11 0x686ff32d in Parrot_runops_fromc_args (interp=0x3f4150, sub=0x9aab48,
    sig=0x689ea410 "vP") at src/inter_run.c:305
#12 0x686e8d71 in Parrot_ex_throw_from_c (interp=0x3f4150,
exception=0x9a9dc8)
    at src/exceptions.c:311
#13 0x686e8e21 in Parrot_ex_throw_from_c_args () at src/exceptions.c:378
#14 0x70404fdd in Parrot_LuaAny_multi_add_DEFAULT_PMC (interp=0x3f4150,
    pmc=0x9aa1a8, value=0x9a9ec8, dest=0x0) at luaany.pmc:340



More information about the parrot-dev mailing list