[OE-core] pthreads should rdepend on libgcc

Bartosz Golaszewski brgl at bgdev.pl
Wed Nov 13 21:03:33 UTC 2019


śr., 13 lis 2019 o 16:04 Mark Hatle <mark.hatle at kernel.crashing.org> napisał(a):
>
>
>
> 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.
>

There is no real libpthread package. There's libpthread-stubs but it
only contains pkgconfig files. The actual pthread shared library is in
libc6 package and its inclusion doesn't seem to be conditional. In
that case - isn't it better to just make libgcc_s.so.1 part of libc6?

Bart

> --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