On Sun, Jul 09, 2017 at 10:18:05PM +0200, Joan Lledó wrote: > However, after all the pending threads still were not being canceled. > The problem here was that the standard function where the threads > where blocked on, pthread_cond_wait(), didn't respond to cancel > requests from hurd_thread_cancel(). It was strange, because > pthread_cond_wait() is a valid cancellation point. But in the Hurd > servers we need to call our own non-standard version, > pthread_hurd_cond_wait_np()[7], which reacts to requests from > hurd_thread_cancel() and stops blocking the thread.
Cancellability and interruptibility are two different things. In particular, note how POSIX explicitely mentions that "These functions shall not return an error code of [EINTR]." -- Richard Braun