<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 6:20 PM 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>
or change state to zombie before reporting that it was left behind.<br>
<br>
Signed-off-by: Martin Doucha <<a href="mailto:mdoucha@suse.cz" target="_blank">mdoucha@suse.cz</a>><br></blockquote><div><div class="gmail_default" style="font-size:small">Reviewed-by: Li Wang <<a href="mailto:liwang@redhat.com">liwang@redhat.com</a>></div></div><div><span class="gmail_default" style="font-size:small"></span> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
---<br>
<br>
Changes since v1: Report success even if the child gets stuck in zombie state<br>
<br>
 lib/newlib_tests/test_children_cleanup.sh | 23 +++++++++++++++++------<br>
 1 file changed, 17 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..23408c1bc 100755<br>
--- a/lib/newlib_tests/test_children_cleanup.sh<br>
+++ b/lib/newlib_tests/test_children_cleanup.sh<br>
@@ -10,10 +10,21 @@ 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>
+for i in `seq 6`; do<br>
+       CHILD_STATE=`sed -ne 's/^State:\s*\([A-Z]\).*$/\1/p' "/proc/$CHILD_PID/status" 2>/dev/null`<br>
+<br>
+       if [ ! -e "/proc/$CHILD_PID" ] || [ "x$CHILD_STATE" = "xZ" ]; then<br>
+               echo "TPASS: Child process was cleaned up"<br>
+               exit 0<br>
+       fi<br>
+<br>
+       sleep 1<br>
+done<br>
+<br>
+echo "TFAIL: Child process was left behind"<br>
+exit 1<br>
-- <br>
2.34.1<br>
<br>
</blockquote></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>