* 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