If a thread in critical region got a synchronous signal, according current

signal handling mode, there is no chance to handle the signal, something
must be wrong in the library, just call kse_thr_interrupt to dump its core.
I have the code for a long time, but forgot to commit it.
This commit is contained in:
David Xu 2003-11-09 00:37:14 +00:00
parent f8206c33ec
commit 0e17930dd7
2 changed files with 4 additions and 0 deletions

View File

@ -1568,6 +1568,8 @@ kse_check_completed(struct kse *kse)
!= 0) {
if (SIGISMEMBER(thread->sigmask, sig))
SIGADDSET(thread->sigpend, sig);
else if (THR_IN_CRITICAL(thread))
kse_thr_interrupt(NULL, KSE_INTR_SIGEXIT, sig);
else
(void)_thr_sig_add(thread, sig,
&thread->tcb->tcb_tmbx.tm_syncsig);

View File

@ -1568,6 +1568,8 @@ kse_check_completed(struct kse *kse)
!= 0) {
if (SIGISMEMBER(thread->sigmask, sig))
SIGADDSET(thread->sigpend, sig);
else if (THR_IN_CRITICAL(thread))
kse_thr_interrupt(NULL, KSE_INTR_SIGEXIT, sig);
else
(void)_thr_sig_add(thread, sig,
&thread->tcb->tcb_tmbx.tm_syncsig);