|
On some slow environments, there is a time between SIGCHLD and process termination. It leads to some issues as described at
https://bugs.launchpad.net/fuel/+bug/1444989
Puppet should verify SIGCHLD and make sure process actually ended and not zombied
Looking at util/execution.rb
if execution_stub = Puppet::Util::ExecutionStub.current_value return execution_stub.call(*exec_args) elsif Puppet.features.posix? child_pid = execute_posix(*exec_args) exit_status = Process.waitpid2(child_pid).last.exitstatus
Puppet code doesn't have any traps for sigchild to have any extra verifications if process zombied or stuck
trap(:CHLD) do begin while pid = Process.wait(-1, Process::WNOHANG) exit if pid == child_pid end rescue Errno::ECHILD end end
|