diff --git a/tests/launcher.py b/tests/launcher.py
index d9d50da739f9ee3c0ed08d56d4d85c62ef85e30f..c7bf888185e2a536fca97197301e15a99ff22b39 100755
--- a/tests/launcher.py
+++ b/tests/launcher.py
@@ -202,6 +202,7 @@ class TestLauncher(BaseTest):
 
     def test_socket(self) -> None:
         with tempfile.TemporaryDirectory(prefix='test-') as temp:
+            need_terminate = True
             proc = subprocess.Popen(
                 self.launcher + [
                     '--socket', os.path.join(temp, 'socket'),
@@ -365,8 +366,23 @@ class TestLauncher(BaseTest):
                                 'Process %d did not exit' % pid
                             )
 
+                    conn.call_sync(
+                        None,
+                        LAUNCHER_PATH,
+                        LAUNCHER_IFACE,
+                        'Terminate',
+                        GLib.Variant('()', ()),
+                        GLib.VariantType('()'),
+                        Gio.DBusCallFlags.NONE,
+                        -1,
+                        None,
+                    )
+                    need_terminate = False
+
             finally:
-                proc.terminate()
+                if need_terminate:
+                    proc.terminate()
+
                 proc.wait()
                 self.assertEqual(proc.returncode, 0)