diff --git a/src/main.cc b/src/main.cc
index e70a9430a253818cf995d6b6969a1d4843dc718a..c593f838483d78d2953899bb873cf67617ef2129 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -461,6 +461,13 @@ tarantool_free(void)
 	if (getpid() != master_pid)
 		return;
 
+	/*
+	 * It's better to do nothing and keep xlogs opened when
+	 * we are called by exit() from a non-main thread.
+	 */
+	if (!cord_is_main())
+		return;
+
 	/* Shutdown worker pool. Waits until threads terminate. */
 	coio_shutdown();