diff --git a/src/box/memtx_engine.c b/src/box/memtx_engine.c
index 057a35de022d9e5fbc2e5127bb0f463272e07a4c..07ebfffffa1dd38176de8ea4eb871855aa331b82 100644
--- a/src/box/memtx_engine.c
+++ b/src/box/memtx_engine.c
@@ -634,7 +634,10 @@ checkpoint_f(va_list ap)
 			}
 		}
 	}
-	xlog_flush(&snap);
+	if (xlog_flush(&snap) < 0) {
+		xlog_close(&snap, false);
+		return -1;
+	}
 	xlog_close(&snap, false);
 	say_info("done");
 	return 0;
diff --git a/test/box/errinj.result b/test/box/errinj.result
index a83dcf0a409ca6aee719548af04c9d7acfa05a25..355185169428cc3b1f9eef9d9b9c93084756ecec 100644
--- a/test/box/errinj.result
+++ b/test/box/errinj.result
@@ -667,6 +667,21 @@ errinj.set("ERRINJ_WAL_WRITE_DISK", false)
 ---
 - ok
 ...
+_ = space:insert{1}
+---
+...
+errinj.set("ERRINJ_WAL_WRITE", true)
+---
+- ok
+...
+box.snapshot()
+---
+- error: Error injection 'xlog write injection'
+...
+errinj.set("ERRINJ_WAL_WRITE", false)
+---
+- ok
+...
 space:drop()
 ---
 ...
diff --git a/test/box/errinj.test.lua b/test/box/errinj.test.lua
index e4dc7a5497ac2db4bf9d02aac559aa26a5366d95..992f6e2a99f04aef0e27dc3d7b6658c7abdd9351 100644
--- a/test/box/errinj.test.lua
+++ b/test/box/errinj.test.lua
@@ -196,6 +196,12 @@ errinj.set("ERRINJ_WAL_WRITE", false)
 errinj.set("ERRINJ_WAL_WRITE_DISK", true)
 _ = space:insert{1, require'digest'.urandom(192 * 1024)}
 errinj.set("ERRINJ_WAL_WRITE_DISK", false)
+
+_ = space:insert{1}
+
+errinj.set("ERRINJ_WAL_WRITE", true)
+box.snapshot()
+errinj.set("ERRINJ_WAL_WRITE", false)
 space:drop()
 
 --test space:bsize() in case of memory error