#define PL_signals (vTHX->Isignals) if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) - failure here
This issue seems to be occurring due to a race condition between threads when they are exiting Similar issues in old versions have been patched by blocking the signals until the thread context is set as below: reference : https://rt.perl.org/Public/Bug/Display.html?id=60724
Is it possible to block a SIGTERM signal in the same way as it was done for the others to take care of this race condition and help thread context to be set and avoid the vTHX object from becoming null leading to this crash. Please advise of any further implications. Thanks/* Block most signals for calling thread, setting the old signal ma +sk to + * oldmask, if it is not NULL */ +STATIC int +S_block_most_signals(sigset_t *oldmask) +{ + sigset_t newmask; + + sigfillset(&newmask); + /* Don't block certain "important" signals (stolen from mg.c) +*/ +#ifdef SIGILL + sigdelset(&newmask, SIGILL); +#endif +#ifdef SIGBUS + sigdelset(&newmask, SIGBUS); +#endif +#ifdef SIGSEGV + sigdelset(&newmask, SIGSEGV); +#endif
2018-02-02 Athanasius added code tags and linkified link
In reply to Mask SIGTERM in thread destruction to avoid a SIGTERM by arsvrv
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |