Re[2]: [Gc] Segfault in GC_mark_from

Ivan Maidanski ivmai at mail.ru
Sun Oct 12 10:06:31 PDT 2008


Hi!

Klaus Treichel <ktreichel at web.de> wrote:
> Hi,
> 
> i finally managed to reproduce the segfault on one of my boxes running
> a ?x86 Linux.
> 
> libgc is built with assertions enabled but without mmap and munmap.
You are not using THREAD_LOCAL_ALLOC and PARALLEL_MARK, aren't you?
And, on the contrary, ALL_INTERIOR_POINTERS should be defined.

> 
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0xb69b7b90 (LWP 6451)]
> GC_mark_from (mark_stack_top=0x819c110, mark_stack=0x819c000,
>     mark_stack_limit=0x81a4000) at mark.c:795
> 795               deferred = *(word *)limit;
> (gdb) print limit
> $1 = 0x83f20b8 <Address 0x83f20b8 out of bounds>
> (gdb) print mark_stack_top[0]
> $4 = {mse_start = 0x83f20bc <Address 0x83f20bc out of bounds>,
>   mse_descr = 2064244}

Please insert something like "GC_noop1(*(word*)...->mse_start);" after every place
in gclib where mse_start is changed. And try to reproduce the segfault again...

> (gdb) call GC_dump()
> ....
> 
> This is the bt of an other thread.
> I don't know if that's something important.
> 
> #0  0xffffe410 in __kernel_vsyscall ()
> #1  0xb7d58d77 in sigsuspend () from /lib/libc.so.6
> #2  0x0810c5f2 in GC_suspend_handler_inner (
>     sig_arg=0x1e <Address 0x1e out of bounds>, context=0xb71b77dc)
>     at pthread_stop_world.c:202
> #3  0x0810c657 in GC_suspend_handler (sig=30, info=0xb71b775c,
>     context=0xb71b77dc) at pthread_stop_world.c:142
> #4  <signal handler called>
> #5  0xb7d9d1f7 in memset () from /lib/libc.so.6
> #6  0x08100eac in GC_generic_malloc (lb=208915, k=4) at malloc.c:189
> #7  0x08108eb1 in GC_malloc_explicitly_typed (lb=208915, d=1073741825)
>     at typd_mlc.c:611
It seems to look good... (the world is stopped).

> 
> Any Hints where to look at ?
> 
> Klaus

Bye.

PS. Please, don't reply to me - just post to the list (otherwise I'm getting it twice).



More information about the Gc mailing list