Jeff Webb wrote: > I have personally experienced what seems (to me) to be a similar > issue involving signal handling where a signal handling thread > received a SIGINT via sigwait (other threads had SIGINT blocked), > and tried to set a global variable that should have caused the > other threads to terminate. The other threads had an issue where > they would not wake up from sem_timedwait calls (or even sleep > calls) after the SIGINT was received by the other thread, so they > would not terminate properly.
I forgot to mention that I solved this issue by creating the signal handling thread using __STD(pthread_create) instead of the cobalt version. When this linux thread received a SIGINT, the other threads continued to operate normally. There seemed to be a difference in behavior even though I also used SCHED_OTHER with the cobalt pthread_create call. This may be a clue... If I can reproduce the issue again with a simple test case, I will post it. I attempted to do this earlier today, but I couldn't recreate the problem. Thanks, -Jeff
