[OE-core] pthreads should rdepend on libgcc

Mark Hatle mark.hatle at kernel.crashing.org
Wed Nov 13 15:04:21 UTC 2019



On 11/13/19 2:34 AM, Bartosz Golaszewski wrote:
> This isn't a patch as I'm not sure how to fix the right way it but it
> seems to my that every program that calls pthread_exit() indirectly
> rdepends on libgcc_s.so.1 being installed in the system (at least when
> using glibc).
> 
> This is because the implementation of __pthread_exit() in glibc calls
> pthread_cancel() which leads to pthread_cancel_init() being called in
> which said shared object is being loaded with dlopen(). When this
> fails, the program aborts with the following error message:
> 
>     libgcc_s.so.1 must be installed for pthread_cancel to work
>     Aborted

Fix for this would be to declare a runtime-dependency on libgcc_s.so.1 in the
glibc libpthread package.

--Mark

> A quick way of reproducing it is building a core-image-minimal (which
> by default doesn't contain libgcc) with the core python3 package and
> running the simple python HTTP server:
> 
>     python3 -m http.server 8000
> 
> Fetching any file will result in the above crash of the python process
> when the thread serving the file exits.
> 
> I'm not sure if the same issue is present in musl - the implementation
> of __pthread_exit() there is different.
> 
> Please advise on how to best approach this.
> 
> Thanks in advance,
> Bartosz Golaszewski
> 


More information about the Openembedded-core mailing list