Hi,

> I need the patch below on FreeBSD/amd64, otherwise trace cache
> pool is not initialized, and e.g. Gtest-bt loops infinitely in
> mempool.c:add_memory() due to obj_size == 0.

I confirm for my part this patch is fine (after MIME-demangling the patch).
For a long time I programmed these caveats in threaded code, then started
giving up on them, as I thought there are no longer systems in use which
actually require the hacks. Seems I was wrong... or maybe just spoiled?
Thanks for providing the fix Konstantin.

> commit 6d904047253827a047907a45b67694c17df2c65d
> Author: Konstantin Belousov <[email protected]>
> Date:   Sat Sep 17 00:47:23 2011 +0300
> 
>    On FreeBSD, as well as on the Solaris < 10, weak pthread_once stub is
>    always exported from libc. But it does nothing, which means that if
>    threaded library is not loaded, then pthread_once() call do not actually
>    call the initializer finction. The construct
>      if (likely (pthread_once != 0))
>      {
>        pthread_once(&trace_cache_once, &trace_cache_init_once);
>    then fails to initialize the trace cache on x86_64.
> 
>    Work around by checking that the initializer was indeed called.
>    Note that this can break if libthr is loaded dynamically, but my belief
>    is that there is no platforms which allow dynamic loading of the threading
>    library.

Regards,
Lassi
_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to