<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 15, 2022 at 12:51 AM Martin Doucha <<a href="mailto:mdoucha@suse.cz">mdoucha@suse.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Processes can stay alive for a short while even after receiving SIGKILL.<br>
Give the child in subprocess cleanup libtest up to 5 seconds to fully exit<br>
before reporting that it was left behind.</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Signed-off-by: Martin Doucha <<a href="mailto:mdoucha@suse.cz" target="_blank">mdoucha@suse.cz</a>><br>
---<br>
 lib/newlib_tests/test_children_cleanup.sh | 21 +++++++++++++++------<br>
 1 file changed, 15 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/lib/newlib_tests/test_children_cleanup.sh b/lib/newlib_tests/test_children_cleanup.sh<br>
index 4b4e8b2f0..44505aa51 100755<br>
--- a/lib/newlib_tests/test_children_cleanup.sh<br>
+++ b/lib/newlib_tests/test_children_cleanup.sh<br>
@@ -10,10 +10,19 @@ rm "$TMPFILE"<br>
 if [ "x$CHILD_PID" = "x" ]; then<br>
        echo "TFAIL: Child process was not created"<br>
        exit 1<br>
-elif ! kill -s 0 $CHILD_PID &>/dev/null; then<br>
-       echo "TPASS: Child process was cleaned up"<br>
-       exit 0<br>
-else<br>
-       echo "TFAIL: Child process was left behind"<br>
-       exit 1<br>
 fi<br>
+<br>
+# The child process can stay alive for a short while even after receiving<br>
+# SIGKILL, especially if the system is under heavy load. Wait up to 5 seconds<br>
+# for it to fully exit.<br></blockquote><div><br></div><div><br></div><div><div class="gmail_default" style="">It doesn't work for all platforms and we can not guarantee how long it will<br>cost before PID 1 reaps zombie process.</div><div class="gmail_default" style=""><br>Also, I just get to know that  Docker does not run processes under a</div><div class="gmail_default" style="">special init process that properly reaps child processes, so that it is</div><div class="gmail_default" style="">possible for the container to end up with zombie processes that cause</div><div class="gmail_default" style="">all sorts of trouble.</div><div class="gmail_default" style=""><br></div><div class="gmail_default" style="">I even try adding `kill -SIGCHLD 1` but does not work as expected.</div><div class="gmail_default" style=""><br></div><div class="gmail_default" style="font-size:small">See CI jobs:</div><div class="gmail_default" style="font-size:small">  <a href="https://mail.google.com/mail/u/1/%E2%80%8Bhttps://github.com/wangli5665/ltp/runs/5194270998?check_suite_focus=true">https://github.com/wangli5665/ltp/runs/5194270998?check_suite_focus=true</a></div><div class="gmail_default" style="font-size:small"></div></div><div class="gmail_default" style="font-size:small"><br></div></div><div class="gmail_default" style="font-size:small">Therefore, I suggest giving a chance to my refined patch V2 :).</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">--- a/lib/newlib_tests/test_children_cleanup.sh<br>+++ b/lib/newlib_tests/test_children_cleanup.sh<br>@@ -10,10 +10,16 @@ rm "$TMPFILE"<br> if [ "x$CHILD_PID" = "x" ]; then<br>        echo "TFAIL: Child process was not created"<br>        exit 1<br>+elif grep -q "Z (zombie)" /proc/$CHILD_PID/status; then<br>+       echo "TPASS: Child process is in zombie state"<br>+       exit 0<br> elif ! kill -s 0 $CHILD_PID &>/dev/null; then<br>        echo "TPASS: Child process was cleaned up"<br>        exit 0<br> else<br>        echo "TFAIL: Child process was left behind"<br>+       echo "cat /proc/$CHILD_PID/status"<br>+       echo "---------------------------"<br>+       cat /proc/$CHILD_PID/status<br>        exit 1<br> fi<br></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>