[omniORB] Uninitialized memory read errors reported in omniORB
Mike Wyatt
mwyatt at mpc-data.co.uk
Fri Feb 18 17:16:31 GMT 2005
We have been using Rational Purify to debug a C++ based application running
on Solaris 8. The application uses omniORB 4.0.1. The application and
omniORB is compiled using Sun WorkShop 6 update 1 C++ 5.2.
There were some array bounds and free memory read errors reported by purify
that we traced to coding errors in the application source. These have been
fixed but purify is still reporting some "UMR: Uninitialized memory read"
errors. I cannot trace these back to our application source, they appear to
be in the omniORB source.
Has anyone else seen similar UMRs in their applications? Are any of these
issues a cause for concern?
Our application has been running stably for a week or so now so these issues
don't seem to be causing any problems.
Thanks,
Mike Wyatt
MPC Data Limited
Purify output:
**** Purify instrumented ClipsES_Srv (pid 26643) ****
UMR: Uninitialized memory read (2 times):
* This is occurring while in:
void omni::unix_get_ifinfo(omnivector<const char*>&) [tcpTransportImpl.cc:242]
void omni::tcpTransportImpl::initialise() [tcpTransportImpl.cc:232]
void omni::omni_giopEndpoint_initialiser::attach() [giopEndpoint.cc:439]
CORBA::ORB*CORBA::ORB_init(int&,char**,const char*,const char*(*)[2])
[corbaOrb.cc:665]
main [ClipsES_Srv.cc:113]
_start [crt1.o]
* Reading 4 bytes from 0x1bffcc in the heap.
* Address 0x1bffcc is 20 bytes into a malloc'd block at 0x1bffb8 of 3520
bytes.
* This block was allocated from:
malloc [rtlib.o]
void omni::unix_get_ifinfo(omnivector<const char*>&) [tcpTransportImpl.cc:242]
void omni::tcpTransportImpl::initialise() [tcpTransportImpl.cc:232]
void omni::omni_giopEndpoint_initialiser::attach() [giopEndpoint.cc:439]
CORBA::ORB*CORBA::ORB_init(int&,char**,const char*,const char*(*)[2])
[corbaOrb.cc:665]
main [ClipsES_Srv.cc:113]
**** Purify instrumented ClipsES_Srv (pid 26643) ****
UMR: Uninitialized memory read (3 times):
* This is occurring while in:
_so_send [libc.so.1]
int omni::tcpConnection::Send(void*,unsigned,unsigned long,unsigned long)
[tcpConnection.cc:178]
void omni::giopStream::sendChunk(omni::giopStream_Buffer*) [giopStream.cc:1076]
void omni::giopImpl10::outputMessageEnd(omni::giopStream*) [giopImpl10.cc:945]
void omni::GIOP_C::InitialiseRequest() [GIOP_C.cc:144]
void omniRemoteIdentity::dispatch(omniCallDescriptor&) [remoteIdentity.cc:169]
* Reading 100 bytes from 0x1cd778 in the heap (3 bytes at 0x1cd78d uninit).
* Address 0x1cd778 is 24 bytes into a malloc'd block at 0x1cd760 of 8220
bytes.
* This block was allocated from:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
void*operator new[](unsigned) [rtlib.o]
omni::giopStream_Buffer*omni::giopStream_Buffer::newBuffer(unsigned long)
[giopStream.cc:661]
void omni::giopImpl10::outputNewMessage(omni::giopStream*) [giopImpl10.cc:896]
**** Purify instrumented ClipsES_Srv (pid 26643) ****
UMR: Uninitialized memory read (42 times):
* This is occurring while in thread 11:
_so_send [libc.so.1]
int omni::tcpConnection::Send(void*,unsigned,unsigned long,unsigned long)
[tcpConnection.cc:178]
void omni::giopStream::sendChunk(omni::giopStream_Buffer*) [giopStream.cc:1076]
void omni::giopImpl12::outputMessageEnd(omni::giopStream*) [giopImpl12.cc:1319]
void omni::GIOP_S::SendReply() [GIOP_S.cc:638]
void omniCallHandle::upcall(omniServant*,omniCallDescriptor&)
[callHandle.cc:155]
* Reading 257 bytes from 0x366850 in the heap (1 byte at 0x36687b uninit).
* Address 0x366850 is 24 bytes into a malloc'd block at 0x366838 of 8220
bytes.
* This block was allocated from thread 11:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
void*operator new[](unsigned) [rtlib.o]
omni::giopStream_Buffer*omni::giopStream_Buffer::newBuffer(unsigned long)
[giopStream.cc:661]
void omni::giopImpl12::outputNewMessage(omni::giopStream*) [giopImpl12.cc:1255]
**** Purify instrumented ClipsES_Srv (pid 26643) ****
UMR: Uninitialized memory read (79 times):
* This is occurring while in thread 8:
mutex_unlock [libthread.so.1]
cond_timedwait [libthread.so.1]
pthread_cond_timedwait [libthread.so.1]
int omni_condition::timedwait(unsigned long,unsigned long) [posix.cc:143]
void omni::Scavenger::execute() [giopStrand.cc:647]
void omniAsyncWorker::real_run() [omniAsyncInvoker.h:118]
* Reading 4 bytes from 0x1c1fa4 in the heap (2 bytes at 0x1c1fa5 uninit).
* Address 0x1c1fa4 is 12 bytes into a malloc'd block at 0x1c1f98 of 24 bytes.
* This block was allocated from:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
void omni::Scavenger::initialise() [giopStrand.cc:787]
void omni::omni_giopStrand_initialiser::attach() [giopStrand.cc:923]
CORBA::ORB*CORBA::ORB_init(int&,char**,const char*,const char*(*)[2])
[corbaOrb.cc:665]
**** Purify instrumented ClipsES_Srv (pid 26643) ****
UMR: Uninitialized memory read (56 times):
* This is occurring while in thread 11:
mutex_unlock [libthread.so.1]
pthread_cond_wait [libthread.so.1]
void omni_condition::wait() [posix.cc:134]
void omni_rmutex::lock() [rmutex.cc:56]
omni_optional_rlock::omni_optional_rlock(omni_rmutex*,int,int) [rmutex.h:83]
void omni::omniOrbPOA::dispatch(omniCallHandle&,omniLocalIdentity*)
[poa.cc:1752]
* Reading 4 bytes from 0x1c391c in the heap (2 bytes at 0x1c391d uninit).
* Address 0x1c391c is 12 bytes into a malloc'd block at 0x1c3910 of 56 bytes.
* This block was allocated from:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
omni::omniOrbPOA::omniOrbPOA(const char*,omni::omniOrbPOAManager*,const
omni::omniOrbPOA::Policies&,omni::omniOrbPOA*) [poa.cc:2018]
PortableServer::POA*omni::omniOrbPOA::create_POA(const
char*,PortableServer::POAManager*,const
_CORBA_Pseudo_Unbounded_Sequence<CORBA::Policy,_CORBA_PseudoObj_Member<CORBA::Policy,_CORBA_PseudoObj_Var<CORBA::Policy>
> >&) [poa.cc:625]
main [ClipsES_Srv.cc:163]
**** Purify instrumented ClipsES_Srv (pid 26643) ****
UMR: Uninitialized memory read (50 times):
* This is occurring while in thread 11:
mutex_unlock [libthread.so.1]
cond_timedwait [libthread.so.1]
pthread_cond_timedwait [libthread.so.1]
int omni_condition::timedwait(unsigned long,unsigned long) [posix.cc:143]
void omniAsyncWorker::real_run() [omniAsyncInvoker.h:118]
void omniAsyncWorkerInfo::run() [invoker.cc:229]
* Reading 4 bytes from 0x1c17f4 in the heap (2 bytes at 0x1c17f5 uninit).
* Address 0x1c17f4 is 12 bytes into a malloc'd block at 0x1c17e8 of 24 bytes.
* This block was allocated from:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
omniAsyncInvoker::omniAsyncInvoker(unsigned) [invoker.cc:237]
omni::ORBAsyncInvoker::ORBAsyncInvoker(unsigned) [invoker.h:54]
void omni::omni_corbaOrb_initialiser::attach() [corbaOrb.cc:1498]
More information about the omniORB-list
mailing list