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.








<br><hr align="left" width="300">
View this message in context: <a href="http://www.nabble.com/Server-dies-when-throwing-exception-after-client-connection-closed-on-AIX-tf3563836.html#a9954189">Server dies when throwing exception after client connection closed on AIX</a><br>
Sent from the <a href="http://www.nabble.com/OmniORB---User-f709.html">OmniORB - User mailing list archive</a> at Nabble.com.<br>