I'll admit, for starters, that I'm not sure exactly what the pathology of this is, but I have a case where an application -- which uses Ice facilities, but not the communicator -- works if I inherit from LocalObject, but not if I inherit from Object.
Specifically, it seems that presence of a IceUtil::Handle hangs my test app -- in what I had previously believed was a totally unrelated place -- if the template parameter is of a class that derives from Ice::Object.
I tried to narrow this down some more, but wasn't able to reproduce it with a trivial use of handles and threads (though I was able to trigger an assertion, as long as I wasn't running under the debugger).
The sample in question is less than 200 lines, though, so I figure I'll throw it up here anyway. I'm running on Fedora Core 1 with all the latest glibc goodies.
If you change
Code:
class TimedEventService : virtual public Ice::LocalObject {
to
Code:
class TimedEventService : virtual public Ice::Object {
you should see the hang. I certainly do. I don't understand it at all, to be honest.
Mike