Hi!
As I have some hassle around a Ice::Service implementation I did (probably a nice race condition), I took a look at the implementation of IcePackNode and IcePackRegistry which also implement the Ice::Service interface.
Maybe the question is a bit stupid, but can you tell me why you simply "return true;" in e.g. IcePack::NodeService::shutdown().
I tried to do the same in my app, mimmicking the behaviour of the two apps mentioned above but this didn't lead into progress for the shutdown. Instead, the application was stuck and pressing Ctrl+C (in application mode) again and again yielding in yet new calls of shutdown(). I.e., stop() was never called, where the communicator is shut down.
When calling Ice::Service::shutdown(), i.e.
bool MyService::shutdown()
{
// something
return Ice::Service::shutdown();
}
instead, everything went well. I know what Ice::Service::shutdown() does (I've read the sources

), but why does the code work in your case and doesn't work in mine. Did I miss some other code hidden in the IcePack services that allows your code to work?
Thanks,
Stephan