The wait I'm referring to is the one on the semaphore underlying to the condition 
variable (pthread_sem_take on cond->sem). This ends up as a call to 
nxsem_wait_uninterruptible which loops on the wait to ignore EINTR errors. So I 
understand that a signal would not interrupt the wait (and thus, the call to 
pthread_cond_wait).

When the thread is canceled, nxsem_wait() will return ECANCELED. In that case, nxsem_wait_interruptible() will return the error.

If you continue to loop, then cancellation is not ocurring (i.e., EINTR is received not ECANCELED).  This would be the case if, for example, you attached a signal handler to the signal used for cancellation

Reply via email to