Hi Guo,
Guo Ren wrote,

> In libc/sysdeps/linux/common/bits/uClibc_pthread.h:
> extern void weak_function _pthread_cleanup_push_defer(...)
> 
> This *weak_function* declaration will cause nptl/cleanup_defer_compat.c:
> strong_alias (...) !!!FAIL!!!, because it include pthreadP.h->pthread.h
> ->uClibc_pthread.h
> 
> That means:
> Readelf -s libpthread/nptl/cleanup_defer_compat.o you will get:
> 18: 00000000   198 FUNC    WEAK   DEFAULT    1 _pthread_cleanup_push_def
> Readelf -s libc/misc/internals/__uClibc_main.o you will also get:
> 32: 00000038    58 FUNC    WEAK   DEFAULT    1 _pthread_cleanup_push_def
> 
> Final: gcc malloc_pthread_test.c -lpthread
> The libc/stdlib/malloc-standard/malloc.c:839 (__MALLOC_LOCK->
> _pthread_cleanup_push_def) will use the one in __uClibc_main.o
> !!!not in cleanup_defer_compat.o!!!, becasue two cleanup_defer_compat in
> libc.a with the same weak declarations and the __uClibc_main.o is close
> to front.
> 
> ====
> 
> All of malloc/free will failed in muti-threads' race conditions
> probabilistic.
> 
> As it happens, uClibc-0.9.33.2 is OK, Becasue:
> It's seperated in libpthread.a and libc.a, and the libc.a is the
> last lib for ld internal-cmd, and malloc will get right cleanup_defer_compat
> from libpthread.a.
> 
> This BUG is from 2016-09-24 to now:
> >>>
> commit 29ff9055c80efe77a7130767a9fcb3ab8c67e8ce
> Author: Waldemar Brodkorb <w...@uclibc-ng.org>
> Date:   Sat Sep 24 02:55:31 2016 +0200
> 
>     use a single libc and deduplicate threading code
> 
>     Similar to musl libc a single libc has many benefits and solves
>     some open issues with uClibc-ng.
> 
>     - no pthread_mutex_* weak symbols exported anymore
>     - applications no longer failing to link when either
>       -lrt or -lpthread are missing for dynamic and static linking mode
>     - smaller C library
>     - slightly better runtime performance
> <<<
> 
> Perharps we need carefully check all of the impact about that commit.

Yes, you are right. There might be more sharp edges.

Thanks for the fix, applied and pushed,
 Waldemar

_______________________________________________
devel mailing list
devel@uclibc-ng.org
https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel

Reply via email to