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;