GC Segfault

Vasily Chekalkin bacek at bacek.com
Mon Jul 20 14:14:17 UTC 2009


François Perrad wrote:
> With WMLScript, I obtain many Garbage Collector Segfaults.
> There disappear with parrot -G
> 
> Note: WMLScript PMCs extend core PMCs, without overload v-table mark
> or destroy.
> And there don't use mem_alloc_* calls.

Ok. It's not "GC" segfault... It's something even more complex.

Here is backtrace. Note "value=0xbffff31c". Segfault happened when GC 
try to mark this value. My PCC and wmls knowledge aren't strong enough 
to fix it before release...

(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/bacek/src/parrot/parrot --gc-debug 
languages/wmlscript/wmlsi.pir 
/home/bacek/src/parrot/languages/wmlscript/t/float_15.wmlsc main
warning: Lowest section in /usr/lib/libicudata.so.38 is .hash at 000000b4
[Thread debugging using libthread_db enabled]
[New Thread 0xb6d0a6c0 (LWP 9062)]
[Switching to Thread 0xb6d0a6c0 (LWP 9062)]

Breakpoint 2, Parrot_CPointer_set_pointer (interp=0x804f040, 
pmc=0x812fc98, value=0xbffff31c)
     at ./src/pmc/cpointer.pmc:170
170	        Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
(gdb) bt
#0  Parrot_CPointer_set_pointer (interp=0x804f040, pmc=0x812fc98, 
value=0xbffff31c) at ./src/pmc/cpointer.pmc:170
#1  0xb7d56ea9 in Parrot_pcc_build_sig_object_from_varargs 
(interp=0x804f040, obj=0x80b4960,
     sig=0xb7fb477d "PPP->P", args=0xbffff30c 
"����@�\004\b(�\022\b\002") at src/call/pcc.c:413
#2  0xb7d665a7 in Parrot_mmd_multi_dispatch_from_c_args 
(interp=0x804f040, name=0xb7fb4791 "multiply",
     sig=0xb7fb477d "PPP->P") at src/multidispatch.c:302
#3  0xb7f56710 in Parrot_scalar_multiply (interp=0x804f040, 
pmc=0x812fd10, value=0x812fcf8, dest=0x80b4960)
     at ./src/pmc/scalar.c:1262
#4  0xb7cd91e1 in Parrot_mul_p_p_p (cur_opcode=0x805a660, 
interp=0x804f040) at src/ops/math.ops:741
#5  0xb7d81430 in runops_slow_core (interp=0x804f040, pc=0x805a660) at 
src/runcore/cores.c:462
#6  0xb7d8002e in runops_int (interp=0x804f040, offset=3) at 
src/runcore/main.c:987
#7  0xb7d59725 in runops (interp=0x804f040, offs=3) at src/call/ops.c:119
#8  0xb7d59b34 in runops_args (interp=0x804f040, sub=0x80c5218, 
obj=0x80b4960, meth_unused=0x0, sig=0xb7fa219b "vP",
     ap=0xbffff4ac "") at src/call/ops.c:269
#9  0xb7d5a9e6 in Parrot_runops_fromc_args (interp=0x804f040, 
sub=0x80c5218, sig=0xb7fa219b "vP")
     at src/call/ops.c:338
#10 0xb7d37b57 in Parrot_runcode (interp=0x804f040, argc=3, 
argv=0xbffff62c) at src/embed.c:1021
#11 0xb7f7745f in imcc_run_pbc (interp=0x804f040, obj_file=0, 
output_file=0x0, argc=3, argv=0xbffff62c)
     at compilers/imcc/main.c:801
#12 0xb7f7805c in imcc_run (interp=0x804f040, sourcefile=0xbffff796 
"languages/wmlscript/wmlsi.pir", argc=3,
     argv=0xbffff62c) at compilers/imcc/main.c:1092
#13 0x08048958 in main (argc=3, argv=0xbffff62c) at src/main.c:60
(gdb)


-- 
Bacek


More information about the parrot-dev mailing list