base: activate Rpc_entrypoint explicitly in dtor

The Rpc_exit call is delivered via RPC which results in a deadlock
if the Rpc_entrypoint has not been started yet. To prevent this
situation we active the Rpc_entrypoint explicitly before we call
Rpc_exit.

Fixes #811.
This commit is contained in:
Josef Söntgen 2013-07-16 12:09:10 +02:00 committed by Christian Helmuth
parent a341f744ce
commit 505f4290ec
1 changed files with 6 additions and 0 deletions

View File

@ -120,6 +120,12 @@ Rpc_entrypoint::~Rpc_entrypoint()
{
typedef Object_pool<Rpc_object_base> Pool;
/*
* We have to make sure the server loop is running which is only the case
* if the Rpc_entrypoint was actived before we execute the RPC call.
*/
_delay_start.unlock();
/* leave server loop */
_exit_cap.call<Exit::Rpc_exit>();