[omniORB] Invalid pointer read/write errors
   
    Jonathan Buchanan
     
    buchanan@olsen.ch
       
    Fri, 23 Apr 1999 09:25:51 +0200
    
    
  
Hi,
I am running omniORB 2.7.1 on Solaris 2.5.1 with SPARCWorks C++ compiler
4.2.
I am doing some very simple stuff using a string sequence defined in IDL
as:
typedef sequence<string> MyStringSequence;
I use this type for out parameters in some methods.  On the server side
I dynamically allocate these sequences with new (ref OMG standard
20.13.3), as follows:
// myData was passed as an out param, type MyStringSequence*&
myData = new MyStringSequence( 12 );
It all works.  But... I ran it with Purify which produced some alarming
errors for this statement:
      IPW: Invalid pointer write (12 times)
      This is occurring while in thread 9:
            CORBA::String_member::String_member(void) [libopasCorba.a]
            _VeCtOr_nEw_   [libC.a]
            _vector_new_   [rtlib.o]
            static _CORBA_Sequence<CORBA::String_member>::allocbuf(unsigned long) [libopasCorba.a]
            _CORBA_Sequence<CORBA::String_member>::_CORBA_Sequence<CORBA::String_member>(unsigned long) [seqtemplates.h:84]
            _CORBA_Unbounded_Sequence<CORBA::String_member>::_CORBA_Unbounded_Sequence<CORBA::String_member>(unsigned long) [seqtemplates.h:155]
            OpasResultsImpl::allPlotData(const char*, const char*, char*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&) [OpasResultsImpl.cc:285]
            _sk_OpasResults::_0RL__allPlotData(const char*, const char*, char*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&) [libopasCorba.a]
            OpasResults::allPlotData(const char*, const char*, CORBA::String_OUT_arg, _CORBA_Sequence_OUT_arg<_CORBA_Unbounded_Sequence<CORBA::String_member>, _CORBA_Sequence_Var<_CORBA_Unbounded_Sequence<CORBA::String_member>, CORBA::String_member>>, _CORBA_Sequ... [libopasCorba.a]
            _sk_OpasResults::dispatch(GIOP_S&, const char*, unsigned char) [OpasResultsSK.cc:541]
            GIOP_S::HandleRequest(unsigned char) [libomniORB2.a]
            static GIOP_S::dispatcher(Strand*) [libomniORB2.a]
      Writing 4 bytes to 0xee50135c on the stack of thread 9.
      Address 0xee50135c is 68 bytes above frame pointer in function CORBA::String_member::String_member(void).
      IPR: Invalid pointer read (12 times)
      This is occurring while in thread 9:
            CORBA::String_member::String_member(void) [libopasCorba.a]
            _VeCtOr_nEw_   [libC.a]
            _vector_new_   [rtlib.o]
            static _CORBA_Sequence<CORBA::String_member>::allocbuf(unsigned long) [libopasCorba.a]
            _CORBA_Sequence<CORBA::String_member>::_CORBA_Sequence<CORBA::String_member>(unsigned long) [seqtemplates.h:84]
            _CORBA_Unbounded_Sequence<CORBA::String_member>::_CORBA_Unbounded_Sequence<CORBA::String_member>(unsigned long) [seqtemplates.h:155]
            OpasResultsImpl::allPlotData(const char*, const char*, char*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&) [OpasResultsImpl.cc:285]
            _sk_OpasResults::_0RL__allPlotData(const char*, const char*, char*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&, _CORBA_Unbounded_Sequence<CORBA::String_member>*&) [libopasCorba.a]
            OpasResults::allPlotData(const char*, const char*, CORBA::String_OUT_arg, _CORBA_Sequence_OUT_arg<_CORBA_Unbounded_Sequence<CORBA::String_member>, _CORBA_Sequence_Var<_CORBA_Unbounded_Sequence<CORBA::String_member>, CORBA::String_member>>, _CORBA_Sequ... [libopasCorba.a]
            _sk_OpasResults::dispatch(GIOP_S&, const char*, unsigned char) [OpasResultsSK.cc:541]
            GIOP_S::HandleRequest(unsigned char) [libomniORB2.a]
            static GIOP_S::dispatcher(Strand*) [libomniORB2.a]
      Reading 4 bytes from 0xee50135c on the stack of thread 9.
      Address 0xee50135c is 68 bytes above frame pointer in function CORBA::String_member::String_member(void).
I wonder if these can just be ignored?
Regards,
Jon
BTW, Purify also reports Unitialized Memory Reads at startup in:
static IOP::iorToEncapStr(const unsigned char*, const _CORBA_Unbounded_Sequence<IOP::TaggedProfile>*)
Hope these can be ignored too!