[CRIU] [PATCH] zdtm: show a process tree if a test doesn't show signs of life

Andrei Vagin avagin at openvz.org
Mon Mar 20 16:30:23 PDT 2017


From: Andrei Vagin <avagin at virtuozzo.com>

Call "ps axf" if waitpid() is running more than 10 seconds

Signed-off-by: Andrei Vagin <avagin at virtuozzo.com>
---
 test/zdtm.py | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/test/zdtm.py b/test/zdtm.py
index 57e2ab0..bd82a60 100755
--- a/test/zdtm.py
+++ b/test/zdtm.py
@@ -27,6 +27,13 @@ os.chdir(os.path.dirname(os.path.abspath(__file__)))
 prev_line = None
 
 
+def alarm(*args):
+	print "==== ALARM ===="
+
+
+signal.signal(signal.SIGALRM, alarm)
+
+
 def traceit(f, e, a):
 	if e == "line":
 		lineno = f.f_lineno
@@ -1473,7 +1480,22 @@ class launcher:
 			self.wait()
 
 	def __wait_one(self, flags):
-		pid, status = os.waitpid(0, flags)
+		pid = -1
+		status = -1
+		signal.alarm(10)
+		while True:
+			try:
+				pid, status = os.waitpid(0, flags)
+			except OSError, e:
+				if e.errno == errno.EINTR:
+					subprocess.Popen(["ps", "axf"]).wait()
+					continue
+				signal.alarm(0)
+				raise e
+			else:
+				break
+		signal.alarm(0)
+
 		self.__runtest += 1
 		if pid != 0:
 			sub = self.__subs.pop(pid)
-- 
2.7.4



More information about the CRIU mailing list