Hi Rich,
On Fri, Nov 9, 2018 at 1:19 PM, Richard W.M. Jones <rjones(a)redhat.com> wrote:
Peter Dimitrov and myself were debugging a very peculiar bug when
libguestfs is run as a plugin from collectd:
https://www.redhat.com/archives/libguestfs/2018-November/thread.html#00023
The long story short is that collectd leaks SIGCHLD == SIG_IGN setting
into plugins:
https://www.redhat.com/archives/libguestfs/2018-November/msg00095.html
This means that any plugin that does the usual pattern of:
pid = fork ();
...
if (waitpid (pid, NULL, 0) == -1) {
perror ("waitpid");
exit (EXIT_FAILURE);
}
will fail, because the forked subprocess is automatically reaped
before waitpid is called, resulting in the wait failing with errno ==
ECHILD.
It is possible to work around this by adding:
signal (SIGCHLD, SIG_DFL);
to the plugin. However I believe this is a bug in collectd, and it
should sanitize signals (and maybe other things) before running
plugins.
Rich.
Would you mind opening an issue at
https://github.com/collectd/collectd/issues/new for this?
Kind regards,
Ruben Kerkhof