This forum has been archived. Please start a new discussion on GitHub.

Strange SEGV ...


I contact you because i've a strange error. I'm using Ice version 3.1 on solaris (CC 5.8). I've made a simple application (client/server). Each client register a listener to the server. Every time the server generate a new information, it calls the remove method of the client listener.

However, some times i get the following error:

t@19 (l@10) signal SEGV (no mapping at the fault address) in IceInternal::incRef at line 14 in file "EndpointI.cpp"
14 void IceInternal::incRef(EndpointI* p) { p->__incRef(); }
(dbx) up
Current function is IceInternal::Handle<IceInternal::EndpointI>::Handle
83 incRef(this->_ptr);
(dbx) up
Current function is __rwstd::__construct<IceInternal::Handle<IceInternal::EndpointI>,IceInternal::Handle<IceInternal::EndpointI> >
188 new (p) T1(value);
(dbx) up
Current function is std::uninitialized_copy<const IceInternal::Handle<IceInternal::EndpointI>*,IceInternal::Handle<IceInternal::Endp
739 __RWSTD::__construct(result++, *first++);
(dbx) up
Current function is std::vector<IceInternal::Handle<IceInternal::EndpointI>,std::allocator<IceInternal::Handle<IceInternal::Endpoint
I> > >::operator=
84 __end_of_storage = uninitialized_copy(x.begin(), x.end(), tmp);
(dbx) up
Current function is IceInternal::DirectReference::getConnection
1350 endpts = _endpoints; // Endpoint overrides are already applied on these endpoints.
(dbx) up
Current function is IceDelegateM::Ice::Object::setup
1314 __connection = __reference->getConnection(__compress);
(dbx) up
Current function is IceProxy::Ice::Object::__getDelegate
1050 d->setup(_reference);
(dbx) up
Current function is IceProxy::hdg::realtime::IListener::rawTickerEvent
896 ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase = __getDelegate();
(dbx) up
Current function is IceProxy::hdg::realtime::IListener::rawTickerEvent
425 rawTickerEvent(tick, __defaultContext());
(dbx) up
Current function is hdg::realtime::Manager::rawTickerEvent
294 prx->rawTickerEvent(tick);

Before the prx->rawTickerEvent(tick), i've something like that:

IListenerPrx prx = IListenerPrx::uncheckedCast (myPrx->ice_timeout(8000));

Can you give a way to try to resolve it ?

Thank you.



  • benoit
    benoit Rennes, France
    Hi Joël,

    It looks like there's some sort of memory management or curruption problem. It's difficult to say what could be the cause without seeing more of your code. Could your perhaps post a small self compilable test case that we could use to reproduce it?

  • Ok, i'll try to reproduce a small example that reproduce it, when it will be done, i'll send you.

    Thank you

  • Shame on me ... i've just forgot the _REENTRANT flags ...