diff --git a/src/Lib/Log.cc b/src/Lib/Log.cc
index 4da5f3b178144b5efe7bccc8db5a28045317d55c..51a8ee1ab948180fc2d0d456878b2ba9374fe38b 100644
--- a/src/Lib/Log.cc
+++ b/src/Lib/Log.cc
@@ -62,8 +62,16 @@ void
 LogSink::recieveLogMessage(const Logger *const logger, LogMessage &&msg) noexcept
 {
     const std::lock_guard<std::mutex> messageQueueLockGuard(messageQueueLock);
+    const bool isFatal = msg.getHeader().severity == LogLevel::Critical;
+
     messageQueue.emplace_back(std::make_tuple<const std::string_view, LogMessage>(
         logger->getCategoryView(), std::move(msg.sink())));
+
+    if (isFatal) {
+        std::cerr << "-->>Found a fatal log! flush the message queue and abort<<--\n";
+        flush();
+        abort();
+    }
 }
 
 // Flush all LogMessages to all of the LogSinkDispatchers. Also clear the message queue.