[omniORB] Server dies when throwing exception after client
connection closed on AIX
GrischaPaul
paul at kwsoft.de
Thu Apr 12 01:13:03 BST 2007
One of our applications is a CORBA-Server using OmniOrb (Version 405 and
407). We got it working on windows and several unix platforms, also on AIX
5.3, builded with VisualAge 5. On another AIX 5.3 machine we use VisualAge 8
with latest patches. On this machine our CORBA-Server aborts after two
minutes with segmentation fault inside code of a OmniOrb-library. In this
code an exception is thrown because of recognising an closed client
connection. Throwing an exception because of closed client connections is a
normal behaviour of OmniOrb, and it worked several times before in the same
run.
Last log message of OmniOrb is:
omniORB: (3) inputMessage: from giop:tcp:10.1.73.1:38786 12 bytes
omniORB: (3)
4749 4f50 0102 0005 0000 0000 GIOP........
2007-04-11 16:27:40.985599: CORBA::LOG omniORB: (3) throw
giopStream::CommFailure from
giopImpl12.cc:1275(0,NO,COMM_FAILURE_UnMarshalArguments)
Core file backtrace information:
Illegal instruction (illegal opcode) in . at 0x0 ($t5)
warning: Unable to access address 0x0 from core
(dbx) where
.() at 0x0
__DoThrowV6() at 0xd0838704
_raise__Q3_4omni10giopStream11CommFailureFUlQ2_5CORBA16CompletionStatusbPCcT1(0x41540004,
0x1, 0x0, 0xd459d30c, 0x4fb) at 0xd448ecc4
inputRaiseCommFailure__Q2_4omni10giopImpl12FPQ2_4omni10giopStream(0x201e8074)
at 0xd44c5208
unmarshalWildCardRequestHeader__Q2_4omni10giopImpl12FPQ2_4omni10giopStream(0x201e8074)
at 0xd44c8818
inputMessageBegin__Q2_4omni10giopImpl12FPQ2_4omni10giopStreamPFPQ2_4omni10giopStream_v(0x201e8074,
0xf138e14c) at 0xd44c91d0
dispatcher__Q2_4omni6GIOP_SFv(0x201e8070) at 0xd44cba5c
real_execute__Q2_4omni10giopWorkerFv(0x20127270) at 0xd4410be0
run__Q2_4omni14giopWorkerInfoFv(0x201e49d0) at 0xd4410d04
execute__Q2_4omni10giopWorkerFv(0x20127270) at 0xd4410d70
real_run__15omniAsyncWorkerFv(0x20127310) at 0xd4480c5c
run__19omniAsyncWorkerInfoFv(0x201e4b10) at 0xd44816a8
run__15omniAsyncWorkerFPv(0x20127310, 0x0) at 0xd4481714
omni_thread_wrapper(0x20127310) at 0xd1bb01dc
Core file backtrace information of debug-version of omniOrb libraries:
Segmentation fault in ptrgl._ptrgl [/usr/lib/libC.a] at 0x20920718 ($t5)
0x20920718 (_ptrgl) 800b0000 lwz r0,0x0(r11)
(dbx) where
ptrgl._ptrgl() at 0x20920718
__DoThrowV6() at 0x209228c4
_raise(unsigned long,CORBA::CompletionStatus,bool,const char*,unsigned
long)(0x41540004, 0x1, 0x0, 0x2019d84c, 0x4fb), line 538 in "giopStream.cc"
inputRaiseCommFailure(omni::giopStream*)(0x20c8d0d4), line 1273 in
"giopImpl12.cc"
unnamed block in
unmarshalWildCardRequestHeader(omni::giopStream*)(0x20c8d0d4), line 947 in
"giopImpl12.cc"
unmarshalWildCardRequestHeader(omni::giopStream*)(0x20c8d0d4), line 947 in
"giopImpl12.cc"
inputMessageBegin(omni::giopStream*,void(*)(omni::giopStream*))(0x20c8d0d4,
0x209c2a08), line 723 in "giopImpl12.cc"
dispatcher()(0x20c8d0d0), line 217 in "GIOP_S.cc"
unnamed block in real_execute()(0x20bcc2d0), line 212 in "giopWorker.cc"
real_execute()(0x20bcc2d0), line 212 in "giopWorker.cc"
run()(0x20c899d0), line 100 in "giopWorker.cc"
execute()(0x20bcc2d0), line 114 in "giopWorker.cc"
unnamed block in real_run()(0x20bcc370), line 182 in "invoker.cc"
real_run()(0x20bcc370), line 182 in "invoker.cc"
run()(0x20c89b00), line 229 in "invoker.cc"
run(void*)(0x20bcc370, 0x0), line 133 in "invoker.cc"
omni_thread_wrapper(0x20bcc370), line 451 in "posix.cc"
The same error occurs on our first AIX machine when running binaries
compiled on the second one with VisualAge 8.
OmniOrb binaries are compiled/linked with xlC_r using flags
-qstaticinline -qmaxmem=8192 -qlonglong -qlongdouble -lpthread
as it was configured by the configuration script without passing any special
parameters.
Our CORBA-Server is comiled/linked with xlC using flags
-O2 -D__aix__ -D__powerpc__ -D__OSVERSION__=4 -D_THREAD_SAFE -DTHREAD_SAFE
-DNDEBUG -D_REENTRANT -Wl,-brtl -lomniORB4 -lomniDynamic4 -lCOSDynamic4
-lCOS4 -lomnithread -ldl -lpthread
The error does no occur when compiling OmniOrb 405 with debug information
(-g) and compiling CORBA-Server without optimization (-O2). When using
OmniOrb 407 it works without using -g, but then it only runs on second AIX
machine.
I assume that playing with this flags just hides the error because of
different code generation, but produces no reliable code.
I would be thankfull for every hint or suggestion what else could be tried.
--
View this message in context: http://www.nabble.com/Server-dies-when-throwing-exception-after-client-connection-closed-on-AIX-tf3563836.html#a9954189
Sent from the OmniORB - User mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20070412/cd377591/attachment.htm
More information about the omniORB-list
mailing list