[CRIU] [PATCH] faul-inject: Check a case when parasite can't initialize a command socket

Andrey Vagin avagin at openvz.org
Fri Aug 5 15:42:07 PDT 2016


From: Andrew Vagin <avagin at virtuozzo.com>

Give a fake address for a server socket.

Signed-off-by: Andrew Vagin <avagin at virtuozzo.com>
---
 criu/include/fault-injection.h | 1 +
 criu/parasite-syscall.c        | 4 ++++
 test/jenkins/criu-fault.sh     | 2 ++
 3 files changed, 7 insertions(+)

diff --git a/criu/include/fault-injection.h b/criu/include/fault-injection.h
index 02c8457..e808d19 100644
--- a/criu/include/fault-injection.h
+++ b/criu/include/fault-injection.h
@@ -8,6 +8,7 @@ enum faults {
 	FI_RESTORE_ROOT_ONLY,
 	FI_DUMP_PAGES,
 	FI_RESTORE_OPEN_LINK_REMAP,
+	FI_PARASITE_CONNECT,
 	/* not fatal */
 	FI_CHECK_OPEN_HANDLE = 128,
 	FI_NO_MEMFD = 129,
diff --git a/criu/parasite-syscall.c b/criu/parasite-syscall.c
index b6d283e..75478d9 100644
--- a/criu/parasite-syscall.c
+++ b/criu/parasite-syscall.c
@@ -474,6 +474,10 @@ static int prepare_tsock(struct parasite_ctl *ctl, pid_t pid,
 		}
 	}
 
+	/* Check a case when parasite can't initialize a command socket */
+	if (fault_injected(FI_PARASITE_CONNECT))
+		args->h_addr_len = gen_parasite_saddr(&args->h_addr, getpid() + 1);
+
 	/*
 	 * Set to -1 to prevent any accidental misuse. The
 	 * only valid user of it is accept_tsock().
diff --git a/test/jenkins/criu-fault.sh b/test/jenkins/criu-fault.sh
index 3ce7a40..83e20b9 100755
--- a/test/jenkins/criu-fault.sh
+++ b/test/jenkins/criu-fault.sh
@@ -12,3 +12,5 @@ prep
 
 ./test/zdtm.py run -t zdtm/static/mntns_ghost --fault 2 --keep-going --report report || fail
 ./test/zdtm.py run -t zdtm/static/mntns_ghost --fault 4 --keep-going --report report || fail
+
+./test/zdtm.py run -t zdtm/static/env00 --fault 5 --keep-going --report report || fail
-- 
2.7.4



More information about the CRIU mailing list