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:
parent
f8206c33ec
commit
0e17930dd7
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user