diff --git a/src/Stream/MessageWriter.cpp b/src/Stream/MessageWriter.cpp
index f02e36a435285064d2a26dd6268360f0650b03fc..c81c7d9afde637827acd17af549268452285eaf2 100644
--- a/src/Stream/MessageWriter.cpp
+++ b/src/Stream/MessageWriter.cpp
@@ -56,7 +56,12 @@ void MessageWriter::addMessage(Message const &Msg, bool is_buffered_message) {
       [=]() { writeMsgImpl(Msg.DestPtr, Msg.FbMsg, is_buffered_message); });
 }
 
-void MessageWriter::stop() { RunThread.store(false); }
+void MessageWriter::stop() {
+  RunThread.store(false);
+  if (WriterThread.joinable()) {
+    WriterThread.join();
+  }
+}
 
 void MessageWriter::writeMsgImpl(WriterModule::Base *ModulePtr,
                                  FileWriter::FlatbufferMessage const &Msg,
diff --git a/src/Stream/MessageWriter.h b/src/Stream/MessageWriter.h
index e7e75687c7ab04bec64be496806ae2d8d2dd78a4..e0c0143de5c3017d04665dd1979675034c512267 100644
--- a/src/Stream/MessageWriter.h
+++ b/src/Stream/MessageWriter.h
@@ -42,7 +42,7 @@ public:
 
   /// \brief Tell the writer thread to stop.
   ///
-  /// Non blocking. The thread might take a while to stop.
+  /// Blocking. The thread might take a while to stop.
   void stop();
 
   using ModuleHash = size_t;