diff --git a/repos/base/src/test/thread/main.cc b/repos/base/src/test/thread/main.cc
index 2eef9e3a3..c14536350 100644
--- a/repos/base/src/test/thread/main.cc
+++ b/repos/base/src/test/thread/main.cc
@@ -13,11 +13,13 @@
*/
/* Genode includes */
-#include
-#include
+#include
#include
#include
-#include
+#include
+#include
+#include
+#include
#include
#include
#include
@@ -681,6 +683,37 @@ static void test_successive_create_destroy_threads(Env &env)
}
}
+/**
+ * Test destruction of entrypoint with yet not dissolved components
+ */
+namespace Test {
+ struct Session;
+ struct Server;
+ struct Component;
+}
+
+struct Test::Session : Genode::Session
+{
+ static const char *service_name() { return "EP_TEST"; }
+
+ GENODE_RPC(Rpc_test_untyped, void, test_untyped, unsigned);
+ GENODE_RPC_INTERFACE(Rpc_test_untyped);
+};
+
+struct Test::Component : Genode::Rpc_object
+{
+ void test_untyped(unsigned) { }
+};
+
+static void test_entrypoint_destruction(Genode::Env &env)
+{
+ Test::Component c;
+
+ {
+ Entrypoint ep(env, 8192 /* STACK*/, "test_ep", Affinity::Location());
+ ep.manage(c);
+ }
+}
/******************************************************
** Test destruction of inter-dependent CPU sessions **
@@ -722,6 +755,7 @@ void Component::construct(Env &env)
test_create_as_many_threads(env);
test_successive_create_destroy_threads(env);
+ test_entrypoint_destruction(env);
} catch (int error) {
Genode::error("error ", error);
throw;