diff --git a/src/server.cpp b/src/server.cpp
index 18968cdf98c7d700eb86e33e8bfb4989516361dd..235e802bbfab826cb2001c2af5077c68257a336b 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -481,8 +481,16 @@ void Server::step(float dtime)
 	}
 	// Throw if fatal error occurred in thread
 	std::string async_err = m_async_fatal_error.get();
-	if(async_err != ""){
-		throw ServerError(async_err);
+	if(async_err != "") {
+		if (m_simple_singleplayer_mode) {
+			throw ServerError(async_err);
+		}
+		else {
+			errorstream << "UNRECOVERABLE error occurred. Stopping server. "
+					<< "Please fix the following error:" << std::endl
+					<< async_err << std::endl;
+			FATAL_ERROR(async_err.c_str());
+		}
 	}
 }