diff --git a/test/lib/tarantool_server.py b/test/lib/tarantool_server.py
index 39f5f4e0a9bf74277846a2f8ddac8ce69a18a5a6..95bda7139705d0cdbe3b6b612279ca14c19e0ef8 100644
--- a/test/lib/tarantool_server.py
+++ b/test/lib/tarantool_server.py
@@ -4,6 +4,7 @@ import sys
 import glob
 import time
 import yaml
+import errno
 import daemon
 import socket
 import signal
@@ -520,7 +521,7 @@ class TarantoolServer(Server):
         else:
             self.process.wait()
 
-        self.wait_until_stopped()
+        self.wait_until_stopped(pid)
         # clean-up processs flags
         self.is_started = False
         self.process = None
@@ -616,17 +617,17 @@ class TarantoolServer(Server):
             except socket.error as e:
                 time.sleep(0.001)
 
-    def wait_until_stopped(self):
+    def wait_until_stopped(self, pid):
         """Wait until the server is stoped and has closed sockets"""
         while True:
             try:
-                sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-                sock.connect(("localhost", self.port))
-                sock.close()
                 time.sleep(0.001)
+                os.kill(pid, 0)
                 continue
-            except socket.error as e:
-                break
+            except OSError as err:
+                if err.errno == errno.ESRCH:
+                    break
+                raise
 
     def find_tests(self, test_suite, suite_path):
         def patterned(test, patterns):