pthread_cond_wait() is not supposed to return if a signal is received:
https://pubs.opengroup.org/onlinepubs/009696699/functions/pthread_cond_wait.html
EINTR is not one of the valid return values from pthread_cond_wait().
This is the specific POSIX requirement that must be followed: "If a
signal is delivered to a thread waiting for a condition variable, upon
return from the signal handler the thread resumes waiting for the
condition variable as if it was not interrupted, or it shall return zero
due to spurious wakeup."
"Spurious wakeups" are not handled.