Re: [Gc] OpenBSD

Ivan Maidanski ivmai at mail.ru
Wed Jul 18 08:53:05 PDT 2012


Hi Taylan,

Could you please try this feature branch: https://github.com/ivmai/bdwgc/tree/fix-logging-atexit
It should fix the mentioned problem with GC_err_printf.
If you confirm, I'll put the patch (https://github.com/ivmai/bdwgc/commit/8d44d462c88ee3dc66a194ef6758f24bbf8971cc) to master and release-7.2 branches.

Regards,
Ivan

Sun, 15 Jul 2012 17:43:51 +0200 "Taylan Ulrich B." <taylanbayirli at gmail.com>:
> On OpenBSD 5.1/i386, gc 7.2c fails the tests gctest and threadleaktest.
> 
> It seems to be the same issue as:
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/2012-January/004921.html
> (Note that it tests 7.2alpha6 on OpenBSD 4.9/x68.)
> 
> As also seen in the above link, gctest and threadleaktest output:
> GC_push_all_stacks: sp not set!
> Abort trap (core dumped)
> 
> Here is the backtrace from gctest.core:
> #0  0x06b3b9ad in kill () from /usr/lib/libc.so.64.0
> #1  0x06ba6775 in abort () at /usr/src/lib/libc/stdlib/abort.c:68
> #2  0x0aa5652f in GC_abort (msg=Variable "msg" is not available.
> ) at misc.c:1455
> #3  0x0aa5c157 in GC_push_all_stacks () at pthread_stop_world.c:355
> #4  0x0aa58047 in GC_default_push_other_roots () at os_dep.c:2574
> #5  0x0aa55846 in GC_push_roots (all=1, 
>     cold_gc_frame=0x85263d88 "{ц╓\nП\236╓*╟╦╓\nDR╓*╦=&\205\236х╓\n╟╦╓\nXR╓*") at mark_rts.c:780
> #6  0x0aa55046 in GC_mark_some (
>     cold_gc_frame=0x85263d88 "{ц╓\nП\236╓*╟╦╓\nDR╓*╦=&\205\236х╓\n╟╦╓\nXR╓*") at mark.c:366
> #7  0x0aa4c3fd in GC_stopped_mark (stop_func=0xaa4b8b0 <GC_never_stop_func>) at alloc.c:634
> #8  0x0aa4c89e in GC_try_to_collect_inner (stop_func=0xaa4b8b0 <GC_never_stop_func>) at alloc.c:457
> #9  0x0aa4cadb in GC_collect_or_expand (needed_blocks=1, ignore_off_page=0, retry=0) at alloc.c:1243
> #10 0x0aa4d18c in GC_allocobj (gran=170, kind=0) at alloc.c:1330
> #11 0x0aa51c9b in GC_generic_malloc_inner (lb=1028, k=0) at malloc.c:121
> #12 0x0aa5661b in GC_new_free_list_inner () at misc.c:1485
> #13 0x0aa50d4d in GC_init_gcj_malloc (mp_index=0, mp=0x1c003070) at gcj_mlc.c:100
> #14 0x1c0028bf in run_one_test () at tests/test.c:1212
> #15 0x1c002eab in thr_run_one_test (arg=0x0) at tests/test.c:1688
> #16 0x0aa5ac74 in GC_inner_start_routine (sb=0x85263fb0, arg=0x3c038fd8) at pthread_start.c:56
> #17 0x0aa5606c in GC_call_with_stack_base (fn=0xaa5ac20 <GC_inner_start_routine>, arg=0x3c038fd8)
>     at misc.c:1556
> #18 0x0aa5af67 in GC_start_routine (arg=0x3c038fd8) at pthread_support.c:1549
> #19 0x093aaa2e in _thread_start () at /usr/src/lib/libpthread/uthread/uthread_create.c:242
> #20 0x0000002b in ?? ()
> #21 0x00000000 in ?? ()
> 
> And here from threadleaktest.core:
> #0  0x092229ad in kill () from /usr/lib/libc.so.64.0
> #1  0x0928d775 in abort () at /usr/src/lib/libc/stdlib/abort.c:68
> #2  0x0a4e852f in GC_abort (msg=Variable "msg" is not available.
> ) at misc.c:1455
> #3  0x0a4ee157 in GC_push_all_stacks () at pthread_stop_world.c:355
> #4  0x0a4ea047 in GC_default_push_other_roots () at os_dep.c:2574
> #5  0x0a4e7846 in GC_push_roots (all=1, 
>     cold_gc_frame=0x88e56e88 "{ЦM\nП╬M*╟ьM\nDrM*╦nЕ\210\236ХM\n╟ьM\n") at mark_rts.c:780
> #6  0x0a4e7046 in GC_mark_some (cold_gc_frame=0x88e56e88 "{ЦM\nП╬M*╟ьM\nDrM*╦nЕ\210\236ХM\n╟ьM\n")
>     at mark.c:366
> #7  0x0a4de3fd in GC_stopped_mark (stop_func=0xa4dd8b0 <GC_never_stop_func>) at alloc.c:634
> #8  0x0a4de89e in GC_try_to_collect_inner (stop_func=0xa4dd8b0 <GC_never_stop_func>) at alloc.c:457
> #9  0x0a4deca0 in GC_try_to_collect_general (stop_func=0xa4dd8b0 <GC_never_stop_func>, force_unmap=0)
>     at alloc.c:981
> #10 0x0a4ded96 in GC_gcollect () at alloc.c:1007
> #11 0x1c000a20 in test (arg=0x0) at tests/thread_leak_test.c:27
> #12 0x0a4ecc74 in GC_inner_start_routine (sb=0x88e56fb0, arg=0x3c024fd8) at pthread_start.c:56
> #13 0x0a4e806c in GC_call_with_stack_base (fn=0xa4ecc20 <GC_inner_start_routine>, arg=0x3c024fd8)
>     at misc.c:1556
> #14 0x0a4ecf67 in GC_start_routine (arg=0x3c024fd8) at pthread_support.c:1549
> #15 0x08d41a2e in _thread_start () at /usr/src/lib/libpthread/uthread/uthread_create.c:242
> #16 0x0000002b in ?? ()
> #17 0x00000000 in ?? ()
> 
> 
> In addition to all that, and I doubt this is relevant, I've found that
> leaktest will *sometimes* fail, due to GC_err_printf.
> It seems to never fail when stdout and stderr are redirected to a file.
> In emacs's eterm, which is slow, it seems to always fail.
> In plain urxvt, there seems to be a small chance that it will fail.
> The generated backtraces differ, except that GC_abort is always called
> from the last line of GC_err_printf, via ABORT("write to stderr failed").
> 
> Here is a sample:
> #0  0x0742f9ad in kill () from /usr/lib/libc.so.64.0
> #1  0x0749a775 in abort () at /usr/src/lib/libc/stdlib/abort.c:68
> #2  0x05d7552f in GC_abort (msg=Variable "msg" is not available.
> ) at misc.c:1455
> #3  0x05d75842 in GC_err_printf (format=0x25d628d6 "\t\t%s\n") at misc.c:1341
> #4  0x05d77782 in GC_print_callers (info=0x3c025f80) at os_dep.c:4710
> #5  0x05d6d783 in GC_print_obj (p=0x3c025f78 "") at dbg_mlc.c:385
> #6  0x05d6d7be in GC_debug_print_heap_obj_proc (p=0x3c025f78 "") at dbg_mlc.c:392
> #7  0x05d782be in GC_print_all_errors () at reclaim.c:91
> #8  0x05d6bda7 in GC_gcollect () at alloc.c:1008
> #9  0x05d76177 in GC_exit_check () at misc.c:609
> #10 0x0748f0c5 in __cxa_finalize (dso=0x0) at /usr/src/lib/libc/stdlib/atexit.c:153
> #11 0x074711be in exit (status=0) at /usr/src/lib/libc/stdlib/exit.c:57
> #12 0x1c00069f in ___start ()
> #13 0x1c000612 in _start ()
> 
> 
> Regards,
> Taylan
> _______________________________________________
> Gc mailing list
> Gc at linux.hpl.hp.com
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> 



More information about the Gc mailing list