[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