* Sergey Bugaev:

> Clearly __pthread_setcancelstate has been pragma weak'd, and used here
> without a check. This is a statically linked x86_64-gnu (so, Hurd and
> HTL) executable. Commit 93d78ec1cba68184931b75bef29afd3aed30f43a
> "nptl: Move pthread_setcancelstate into libc" seems to be the culprit:
> that commit only moved the NPTL symbol into libc, yet changed the
> original __libc_ptf_call (__pthread_setcancelstate) calls to direct
> __pthread_setcancelstate calls, in this and many other places.

Apparently, Hurd does not support async cancellation?  Then
__pthread_setcancelstate never has to unwind, so you just turn it into a
non-weak symbol.

If you need async cancellation support, the core cancellation routine
could be made weak, so that it is linked into the executable only if
pthread_cancel is ever called.

Thanks,
Florian


Reply via email to