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


Reply via email to