zed: reap child after killing on time-out

When a child process is killed waitpid() must be called on the
pid the reap the zombie process.

Update BUGS section to reflect reality by replacing "zedlets
aren't time limited with "zedlets can be interrupted".

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #11769 
Closes #11798
This commit is contained in:
наб 2021-03-26 22:21:00 +01:00 committed by Tony Hutter
parent 5072f37419
commit 073f3c7826
2 changed files with 3 additions and 2 deletions

View File

@ -173,6 +173,7 @@ _zed_exec_fork_child(uint64_t eid, const char *dir, const char *prog,
zed_log_msg(LOG_WARNING, "Killing hung \"%s\" pid=%d",
prog, pid);
(void) kill(pid, SIGKILL);
(void) waitpid(pid, &status, 0);
}
}

View File

@ -234,8 +234,8 @@ Terminate the daemon.
Events are processed synchronously by a single thread. This can delay the
processing of simultaneous zevents.
.PP
There is no maximum timeout for ZEDLET execution. Consequently, a misbehaving
ZEDLET can delay the processing of subsequent zevents.
ZEDLETs are killed after a maximum of ten seconds.
This can lead to a violation of a ZEDLET's atomicity assumptions.
.PP
The ownership and permissions of the \fIenabled-zedlets\fR directory (along
with all parent directories) are not checked. If any of these directories