Index: uspace/app/display-cfg/test/seats.c
===================================================================
--- uspace/app/display-cfg/test/seats.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
+++ uspace/app/display-cfg/test/seats.c	(revision be0ec5095e0bc6fbb2c0524886c24ac20993fdbc)
@@ -94,12 +94,13 @@
 	service_id_t sid;
 	test_response_t resp;
+	loc_srv_t *srv;
 
 	async_set_fallback_port_handler(test_dispcfg_conn, &resp);
 
 	// FIXME This causes this test to be non-reentrant!
-	rc = loc_server_register(test_dispcfg_server);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = loc_service_register(test_dispcfg_svc, &sid);
+	rc = loc_server_register(test_dispcfg_server, &srv);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = loc_service_register(srv, test_dispcfg_svc, &sid);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -135,4 +136,8 @@
 	dcfg_seats_destroy(seats);
 	display_cfg_destroy(dcfg);
+
+	rc = loc_service_unregister(srv, sid);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	loc_server_unregister(srv);
 }
 
Index: uspace/app/taskbar/test/wndlist.c
===================================================================
--- uspace/app/taskbar/test/wndlist.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
+++ uspace/app/taskbar/test/wndlist.c	(revision be0ec5095e0bc6fbb2c0524886c24ac20993fdbc)
@@ -139,4 +139,5 @@
 	ui_fixed_t *fixed = NULL;
 	wndlist_t *wndlist;
+	loc_srv_t *srv;
 
 	/* Set up a test WM service */
@@ -145,8 +146,8 @@
 
 	// FIXME This causes this test to be non-reentrant!
-	rc = loc_server_register(test_wndmgt_server);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = loc_service_register(test_wndmgt_svc, &sid);
+	rc = loc_server_register(test_wndmgt_server, &srv);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = loc_service_register(srv, test_wndmgt_svc, &sid);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -177,6 +178,7 @@
 	ui_destroy(ui);
 
-	rc = loc_service_unregister(sid);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	rc = loc_service_unregister(srv, sid);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	loc_server_unregister(srv);
 }
 
Index: uspace/app/terminal/terminal.c
===================================================================
--- uspace/app/terminal/terminal.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
+++ uspace/app/terminal/terminal.c	(revision be0ec5095e0bc6fbb2c0524886c24ac20993fdbc)
@@ -1022,5 +1022,5 @@
 	term->srvs.sarg = term;
 
-	rc = loc_server_register(NAME);
+	rc = loc_server_register(NAME, &term->srv);
 	if (rc != EOK) {
 		printf("Error registering server.\n");
@@ -1033,5 +1033,5 @@
 	    task_get_id());
 
-	rc = loc_service_register(vc, &term->dsid);
+	rc = loc_service_register(term->srv, vc, &term->dsid);
 	if (rc != EOK) {
 		printf("Error registering service.\n");
@@ -1063,4 +1063,8 @@
 	return EOK;
 error:
+	if (term->dsid != 0)
+		loc_service_unregister(term->srv, term->dsid);
+	if (term->srv != NULL)
+		loc_server_unregister(term->srv);
 	if (term->window != NULL)
 		ui_window_destroy(term->window);
Index: uspace/app/terminal/terminal.h
===================================================================
--- uspace/app/terminal/terminal.h	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
+++ uspace/app/terminal/terminal.h	(revision be0ec5095e0bc6fbb2c0524886c24ac20993fdbc)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2021 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * Copyright (c) 2012 Petr Koupy
  * All rights reserved.
@@ -91,4 +91,5 @@
 	charfield_t *ubuf;
 
+	loc_srv_t *srv;
 	service_id_t dsid;
 	con_srvs_t srvs;
