diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index 78eb87d50f4d349ec0b4df8405aeee705861b583..a01b783fe154d7da43d812173c938501fdd20533 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -135,6 +135,7 @@ class AbstractSolver(object):
             exe, args,
         )
         self._process.readyRead.connect(self._data_ready)
+        self._process.finished.connect(self._finished)
 
         return True
 
@@ -149,6 +150,10 @@ class AbstractSolver(object):
         if self._output is not None:
             self._output.put(s)
 
+    def _finished(self, exit_code, exit_status):
+        if self._output is not None:
+            self._output.put(exit_code)
+
     def run(self, process, output_queue):
         self._process = process
         self._output = output_queue
diff --git a/src/View/RunSolver/Window.py b/src/View/RunSolver/Window.py
index 42d7e464c84df6410cdac17b6ac2dc29cad0dab8..fa98007c6618d8b91e5b69318680fcddf8ece731 100644
--- a/src/View/RunSolver/Window.py
+++ b/src/View/RunSolver/Window.py
@@ -111,13 +111,16 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
         self._alarm.timeout.connect(self.update)
 
     def _log(self, msg):
-        msg = msg.rsplit('\n')[0]
-        self.find(QTextEdit, "textEdit").append(msg)
+        if type(msg) == str:
+            msg = msg.rsplit('\n')[0]
+            self.find(QTextEdit, "textEdit").append(msg)
+        elif type(msg) == int:
+            self.find(QTextEdit, "textEdit")\
+                .append(f" *** Solver finished with code {msg}")
 
     def update(self):
         while self._output.qsize() != 0:
             s = self._output.get()
-            print(s)
             self._log(s)
 
     def start(self):