The recent change in code improves main-pool on error, but we need
to kill child process if it still running to avoid hang up in next
waitpid().
Signed-off-by: Karel Zak <kzak@redhat.com>
break;
}
+ if (rc && pty->child && pty->child != (pid_t) -1 && !pty->delivered_signal) {
+ kill(pty->child, SIGTERM);
+ sleep(2);
+ kill(pty->child, SIGKILL);
+ }
+
pty_signals_cleanup(pty);
DBG(IO, ul_debug("poll() done [signal=%d, rc=%d]", pty->delivered_signal, rc));
ctl->outsz += ssz;
-
/* check output limit */
if (ctl->maxsz != 0 && ctl->outsz >= ctl->maxsz) {
if (!ctl->quiet)