[CRIU] [PATCH 1/5] zdtm.py: don't stack trace when umount fails

Tycho Andersen tycho.andersen at canonical.com
Mon Nov 23 12:55:24 PST 2015


I'm not exactly sure why, but it seems when a test fails sometimes I get
this stack trace:

sudo ./zdtm.py run -t zdtm/live/static/bridge
=== Run 1/1 ================

====================== Run zdtm/live/static/bridge in ns =======================
cc -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0  -iquote ../../lib/arch/x86/include -I../../lib   bridge.c ../../lib/libzdtmtst.a   -o bridge
Start test
Test is SUID
./bridge --pidfile=bridge.pid --outfile=bridge.out
mount: /tmp/criu-root-eIt72x is not mountpoint or bad option

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
Run criu dump
Run criu restore
------------------------ grep Error ------------------------
(00.322301)      1: Error (net.c:597): Restoring link lo type 1 (idx 1)
(00.322556)      1: Error (net.c:597): Restoring link zdtmbr0 type 6 (idx 2)
(00.334240)      1: Error (net.c:553): waiting on if zdtmbr0 (index 2 and 2)
------------------------ ERROR OVER ------------------------
Wait for zdtm/live/static/bridge to die for 0.100000
Test output: ================================
1c1
< 2: zdtmbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
---
> 2: zdtmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
02:46:34.877:     5: FAIL: bridge.c:76: Net config differs after restore (errno = 11 (Resource temporarily unavailable))

 <<< ================================
Traceback (most recent call last):
  File "zdtm.py", line 922, in <module>
    do_run_test(tinfo[0], tinfo[1], tinfo[2], tinfo[3])
  File "zdtm.py", line 696, in do_run_test
    t.kill()
  File "zdtm.py", line 302, in kill
    self.__flavor.fini()
  File "zdtm.py", line 168, in fini
    subprocess.check_call(["mount", "--make-private", self.root])
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['mount', '--make-private', '/tmp/criu-root-eIt72x']' returned non-zero exit status 32
umount: /tmp/criu-root-eIt72x: not mounted

Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
---
 test/zdtm.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/test/zdtm.py b/test/zdtm.py
index b9bcb4f..2e701b3 100755
--- a/test/zdtm.py
+++ b/test/zdtm.py
@@ -165,8 +165,12 @@ class ns_flavor:
 			self.__copy_libs(dep)
 
 	def fini(self):
-		subprocess.check_call(["mount", "--make-private", self.root])
-		subprocess.check_call(["umount", "-l", self.root])
+		try:
+			# if these fail, we don't really care.
+			subprocess.check_call(["mount", "--make-private", self.root])
+			subprocess.check_call(["umount", "-l", self.root])
+		except subprocess.CalledProcessError:
+			pass
 
 class userns_flavor(ns_flavor):
 	def __init__(self, opts):
-- 
2.6.2



More information about the CRIU mailing list