I am trying to debug a complex Perl application that terminates with the error message "Signal SIGCHLD received, but no signal handler set". I know that it comes from the Perl interpreter itself, notably from the file mg.c
and it cannot be caught. But I don't understand the exact nature of it.
Is this an internal error in the interpreter of the kind "should not happen"?
Or is there a (simple) way to reproduce this error with recent Perl versions?
I have already tried to reproduce it with hints given in https://lists.gnu.org/archive/html/bug-parallel/2016-10/msg00000.html by setting and unsetting a signal handler in an endless loop and constantly firing that signal in and endless loop from another script. But I could not reproduce the behavior described there with Perl versions 5.18.4, 5.26.0, 5.26.2, 5.28.2, and 5.30.2.
I have also found Signal SIGSTOP received, but no signal handler set in perl script where somebody assigned to $SIG{SIGSTOP}
instead of $SIG{STOP}
but that also does not help to make the problem reproducible with a simple script.
All of the perls I have tested were built without thread support:
$ perl -Mthreads
This Perl not built to support threads
Compilation failed in require.
BEGIN failed--compilation aborted.