[omniORB] HPUX/PA-RISC 64-bits porting

Andrew Novikov anovikov at artezio.ru
Wed Apr 21 21:53:39 BST 2004


Hello,

During my HP-UX porting effort I came across the following problems. 
First of all I was able to build omniORB 4.0.3 on HP-UX 11.11 using aC++
A.03.33. In order to do it I applied a simple patch which fixes
compilation options (it is attached to the e-mail) and ran "./configure
CXX='aCC +DA2.0W -AA' CC=cc --enable-static=no && gmake". After some
experiments with the fresh build I discovered some locking problems
inside the omniORB that were fixed by HP-UX patches PHCO_29960 and
PHCO_27633 (it may sound easy, but it took a lot of time to understand
where was the root of troubles). And then the next problem arose. Under
some circumstances services that use omniORB produce segmentation faults
inside the omniORB. These segmentation faults appear in
src/lib/omniORB/orbcore/giopImpl12.cc:1404 and are caused by the
following code in src/lib/omniORB/orbcore/giopServer.cc:642:

connectionState* cs =  new connectionState(conn,s);

connectionState** head = &(pd_connectionState[((omni::ptr_arith_t)conn)%
						connectionState::hashsize]);
cs->next = *head;
*head = cs;

The code above produces an endless loop in the
omni::omniInterceptorP::clientSendRequest (a list) and it causes
omni::omniInterceptorP::visit() in giopImpl12::marshalRequestHeader() to
segfault. Strange is the fact that such a situation never occurs on
Linux...
So, what is the purpose of giopServer::csInsert() and why does it behave
so strange?

Regards,
Andrew Novikov
-------------- next part --------------
#0  omni::giopServer::csInsert (this=0x800000010013df00, conn=0x8000000100165028) at /home/anovikov/omniORB-4.0.3/src/lib/omniORB/orbcore/giopServer.cc:640
#1  0x800003fffddea0c8 in omni::giopServer::notifyRzNewConnection (this=0x800000010013df00, r=0x800000010013f080, conn=0x8000000100165028) at /home/anovikov/omniORB-4.0.3/src/lib/omniORB/orbcore/giopServer.cc:710
#2  0x800003fffddedaf8 in omni::giopRendezvouser::execute (this=0x800000010013f080) at /home/anovikov/omniORB-4.0.3/src/lib/omniORB/orbcore/giopRendezvouser.cc:88
#3  0x800003fffde61f58 in omniAsyncWorker::real_run (this=0x800000010013f0e0) at /home/anovikov/omniORB-4.0.3/src/lib/omniORB/orbcore/invoker.cc:182
#4  0x800003fffdd70ccc in omniAsyncWorkerInfo::run (this=0x800003fffd35e1f8) at /home/anovikov/omniORB-4.0.3/src/lib/omniORB/orbcore/invoker.cc:229
#5  0x800003fffde623bc in omniAsyncWorker::run (this=0x800000010013f0e0, No.Identifier=0x0) at /home/anovikov/omniORB-4.0.3/src/lib/omniORB/orbcore/invoker.cc:133
#6  0x800003fffd7738a4 in omni_thread_wrapper (ptr=0x800000010013f0e0) at posix.cc:422
#7  0x800003fffd5bf250 in __pthread_body+0x50 () from /usr/lib/pa20_64/libpthread.1
#8  0x800003fffd5c9b0c in __pthread_start+0x14 () from /usr/lib/pa20_64/libpthread.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: beforeauto.mk.in.diff
Type: text/x-patch
Size: 1037 bytes
Desc: not available
Url : http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20040421/4c6fba27/beforeauto.mk.in.bin


More information about the omniORB-list mailing list