[omniORB] Server dies when throwing exception after client connection closed on AIX

GrischaPaul paul at kwsoft.de
Fri Apr 13 02:02:14 BST 2007


Some guy from IMB-support knew the solution. When using VisualAge V8 and
linking to modules created by V5, a compiler flag -qeh=v5 will help, because
standart exception handling level in V8 is 6.


GrischaPaul wrote:
> 
> 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.<br>
> <br>
> Last log message of OmniOrb is:<br>
> <br>
> omniORB: (3) inputMessage: from giop:tcp:10.1.73.1:38786 12 bytes<br>
> omniORB: (3)<br> 
> 4749 4f50 0102 0005 0000 0000           GIOP........<br>
> 2007-04-11 16:27:40.985599: CORBA::LOG omniORB: (3) throw
> giopStream::CommFailure from
> giopImpl12.cc:1275(0,NO,COMM_FAILURE_UnMarshalArguments)<br>
> <br>
> Core file backtrace information:<br>
> <br>
> Illegal instruction (illegal opcode) in . at 0x0 ($t5)<br>
> warning: Unable to access address 0x0 from core<br>
> (dbx) where<br>
> .() at 0x0<br>
> __DoThrowV6() at 0xd0838704<br>
> _raise__Q3_4omni10giopStream11CommFailureFUlQ2_5CORBA16CompletionStatusbPCcT1(0x41540004,
> 0x1, 0x0, 0xd459d30c, 0x4fb) at 0xd448ecc4<br>
> inputRaiseCommFailure__Q2_4omni10giopImpl12FPQ2_4omni10giopStream(0x201e8074)
> at 0xd44c5208<br>
> unmarshalWildCardRequestHeader__Q2_4omni10giopImpl12FPQ2_4omni10giopStream(0x201e8074)
> at 0xd44c8818<br>
> inputMessageBegin__Q2_4omni10giopImpl12FPQ2_4omni10giopStreamPFPQ2_4omni10giopStream_v(0x201e8074,
> 0xf138e14c) at 0xd44c91d0<br>
> dispatcher__Q2_4omni6GIOP_SFv(0x201e8070) at 0xd44cba5c<br>
> real_execute__Q2_4omni10giopWorkerFv(0x20127270) at 0xd4410be0<br>
> run__Q2_4omni14giopWorkerInfoFv(0x201e49d0) at 0xd4410d04<br>
> execute__Q2_4omni10giopWorkerFv(0x20127270) at 0xd4410d70<br>
> real_run__15omniAsyncWorkerFv(0x20127310) at 0xd4480c5c<br>
> run__19omniAsyncWorkerInfoFv(0x201e4b10) at 0xd44816a8<br>
> run__15omniAsyncWorkerFPv(0x20127310, 0x0) at 0xd4481714<br>
> omni_thread_wrapper(0x20127310) at 0xd1bb01dc<br>
> <br>
> Core file backtrace information of debug-version of omniOrb libraries:<br>
> <br>
> Segmentation fault in ptrgl._ptrgl [/usr/lib/libC.a] at 0x20920718
> ($t5)<br>
> 0x20920718 (_ptrgl)    800b0000        lwz   r0,0x0(r11)<br>
> (dbx) where<br>
> ptrgl._ptrgl() at 0x20920718<br>
> __DoThrowV6() at 0x209228c4<br>
> _raise(unsigned long,CORBA::CompletionStatus,bool,const char*,unsigned
> long)(0x41540004, 0x1, 0x0, 0x2019d84c, 0x4fb), line 538 in
> "giopStream.cc"<br>
> inputRaiseCommFailure(omni::giopStream*)(0x20c8d0d4), line 1273 in
> "giopImpl12.cc"<br>
> unnamed block in
> unmarshalWildCardRequestHeader(omni::giopStream*)(0x20c8d0d4), line 947 in
> "giopImpl12.cc"<br>
> unmarshalWildCardRequestHeader(omni::giopStream*)(0x20c8d0d4), line 947 in
> "giopImpl12.cc"<br>
> inputMessageBegin(omni::giopStream*,void(*)(omni::giopStream*))(0x20c8d0d4,
> 0x209c2a08), line 723 in "giopImpl12.cc"<br>
> dispatcher()(0x20c8d0d0), line 217 in "GIOP_S.cc"<br>
> unnamed block in real_execute()(0x20bcc2d0), line 212 in
> "giopWorker.cc"<br>
> real_execute()(0x20bcc2d0), line 212 in "giopWorker.cc"<br>
> run()(0x20c899d0), line 100 in "giopWorker.cc"<br>
> execute()(0x20bcc2d0), line 114 in "giopWorker.cc"<br>
> unnamed block in real_run()(0x20bcc370), line 182 in "invoker.cc"<br>
> real_run()(0x20bcc370), line 182 in "invoker.cc"<br>
> run()(0x20c89b00), line 229 in "invoker.cc"<br>
> run(void*)(0x20bcc370, 0x0), line 133 in "invoker.cc"<br>
> omni_thread_wrapper(0x20bcc370), line 451 in "posix.cc"<br>
> <br>
> The same error occurs on our first AIX machine when running binaries
> compiled on the second one with VisualAge 8.<br>
> <br>
> OmniOrb binaries are compiled/linked with xlC_r using flags <br>
> -qstaticinline -qmaxmem=8192 -qlonglong -qlongdouble -lpthread<br>
> as it was configured by the configuration script without passing any
> special parameters.<br>
> <br>
> Our CORBA-Server is comiled/linked with xlC using flags <br>
> -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<br>
> <br>
> 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. <br>
> I assume that playing with this flags just hides the error because of
> different code generation, but produces no reliable code.<br>
> <br>
> 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#a9974532
Sent from the OmniORB - User mailing list archive at Nabble.com.




More information about the omniORB-list mailing list