[omniORB] Assertion failure in giopImpl12 (omniORB4)
Chris Newbold
cnewbold@laurelnetworks.com
Mon Nov 25 15:42:00 2002
We've got a relatively reproducable scenario that causes omniORB4 to hit
an internal assertion. Here's the assert message:
Nov 22 13:08:54.144519 rcpd[30504:30671]: omniORB D
omniORB: Assertion failed. This indicates a bug in the
application using omniORB, or maybe in omniORB itself. e.g.
using the ORB after it has been shut down.
file:/u/jfardo/work/orb4_main/src/lib/omniORB/orbcore/giopImpl12.cc
line: 322
info: g->pd_strand->servers.next != &g->pd_strand->servers
And here's the backtrace of the offending thread (I've chopped it down
to 20 frames, since the remaining 30 or so aren't relevant):
#0 0x40441c0f pthread_sighandler_rt+175
#1 0x404823f0 __restore_rt
#2 0x404824c1 __kill+17
#3 0x40441f17 raise+39
#4 0x404839b5 abort+225
#5 0x4029dbd8 omniORB::fatalException::fatalException(char
const *,
int, char const *)+52
#6 0x40298859 omni::assertFail(char const *, int, char
const *)+201
#7 0x402d78bc
omni::giopImpl12::inputQueueMessage(omni::giopStream
*, omni::giopStream_Buffer *)+840
#8 0x402d803b
omni::giopImpl12::inputReplyBegin(omni::giopStream *,
void (*)(omni::giopStream *))+347
#9 0x402d812c
omni::giopImpl12::inputMessageBegin(omni::giopStream
*, void (*)(omni::giopStream *))+44
#10 0x402cba83 omni::GIOP_C::ReceiveReply(void)+99
#11 0x402b6842
omniRemoteIdentity::dispatch(omniCallDescriptor
&)+254
#12 0x4029bcbd omniObjRef::_invoke(omniCallDescriptor &,
bool)+189
#13 0x08b5fba7
IF::_objref_ManagedInterface::ifIndex(void)+167
#14 0x09085479
mpls2::RequestExecutor::EnqueueRequest(mpls2::RmRequest *,
mpls2::_objref_ManagedInterface *, util::SimpleMutex *&, void
*&)+217
#15 0x09095788
mpls2::RmRequest::_DoEnqueue(util::SimpleMutex *&,
bool)+56
#16 0x0911364d mpls2::AsyncRequest::Enqueue(bool)+233
#17 0x090f024f mplstmgr::RmRequest::Submit(void)+63
#18 0x09112efa
mplstmgr::VpnTxEndpoint::_Disconnect(std::_Rb_tree_iterator<std::pair<mp
lstmgr::Lsp *const, xconnect::TxEndpointHandle>,
std::pair<mplstmgr::Lsp
*const, xconnect::TxEndpointHandle> &, std::pair<mplstmgr::Lsp
*const,
xconnect::TxEndpointHandle> *> &, mpls2::Request *, bool)+1050
#19 0x090ffd0b
mplstmgr::TxEndpointBase::LowerLspDeleted(mplstmgr::Lsp *)+923
#20 0x091001c4
mplstmgr::TxEndpointBase::LowerTunnelDeleted(void)+404
This seems to be triggered by killing the server process to which we're
trying to make this call; it's likely that the call is already in
progress at the time the server process goes down.
I looked at giopImpl12 a little, and it doesn't look like this could
really be caused by an application-level error (aside from memory
corruption), though I had trouble follow the code...
--
====( Chris Newbold <cnewbold@laurelnetworks.com> )==========================
Laurel Networks, Inc. voice: +1 412 809 4200 fax: +1 412 809 4201
"If you fool around with a thing for very long you will screw it up." --Murphy
------------------------------------------------------------------------------