[omniORB] purify

Saroj Mahapatra saroj@Bear.COM
Thu, 30 Jul 1998 15:45:51 -0400


Randy Shoup wrote:

> Boris Khanales wrote:
> >
> > I have following purify report.
> > Any idea?
> >
> > 1.
> >
> >       IPR: Invalid pointer read
> >       This is occurring while in thread 17:
> >             ImrDiMessageNode::~ImrDiMessageNode(void) [bufferedStream.h:634]
> >
> >
> >                  inline void *align_and_put_bytes(omni::alignment_t align,size_t
> > nbytes) {
> >             =>     omni::ptr_arith_t p1 =
> > omni::align_to((omni::ptr_arith_t)pd_out_mkr,align);
> >                    omni::ptr_arith_t p2 = p1 + nbytes;
> >                    if ((void *)p2 > pd_bufend) {
> >                      grow(p2 - (omni::ptr_arith_t)pd_out_mkr);
> >             delete_vect(void*, unsigned int, int, void (*)(void*, char))
> > [libC.a]
> >             _VeCtOr_dElEtE_ [libC.a]
> >             _vector_delete_ [rtlib.o]
> >             static _CORBA_Sequence<ImrDiMessageNode>::freebuf(ImrDiMessageNode*)
> > [seqtemplates.h:186]
> >                  }
> >                  static inline void freebuf(T * b)
> >                  {
> >             =>     if (b) delete [] b;
> >                    return;
> >                  }
> >                  // omniORB2 extensions
> >
> > _CORBA_Sequence<ImrDiMessageNode>::~_CORBA_Sequence<ImrDiMessageNode>(void)
> > [seqtemplates.h:111]
> >                  }
> >
> >                  inline ~_CORBA_Sequence() {
> >             =>     if (pd_rel && pd_buf) freebuf(pd_buf);
> >                    pd_buf = 0;
> >                    return;
> >                  }
> >       Reading 4 bytes from 0xed5015b0 on the stack of thread 17.
> >       Address 0xed5015b0 is 72 bytes above frame pointer in function
> > ImrDiMessageNode::~ImrDiMessageNode(void).
> >
> > 2.
> >       IPW: Invalid pointer write
> >       This is occurring while in thread 17:
> >             ImrDiMessageNode::~ImrDiMessageNode(void) [msg_hlp.c]
> >             delete_vect(void*, unsigned int, int, void (*)(void*, char))
> > [libC.a]
> >             _VeCtOr_dElEtE_ [libC.a]
> >             _vector_delete_ [rtlib.o]
> >             static _CORBA_Sequence<ImrDiMessageNode>::freebuf(ImrDiMessageNode*)
> > [seqtemplates.h:186]
> >                  }
> >                  static inline void freebuf(T * b)
> >                  {
> >             =>     if (b) delete [] b;
> >                    return;
> >                  }
> >                  // omniORB2 extensions
> >
> > _CORBA_Sequence<ImrDiMessageNode>::~_CORBA_Sequence<ImrDiMessageNode>(void)
> > [seqtemplates.h:111]
> >                  }
> >
> >                  inline ~_CORBA_Sequence() {
> >             =>     if (pd_rel && pd_buf) freebuf(pd_buf);
> >                    pd_buf = 0;
> >                    return;
> >                  }
> >       Writing 4 bytes to 0xed5015b0 on the stack of thread 17.
> >       Address 0xed5015b0 is 72 bytes above frame pointer in function
> > ImrDiMessageNode::~ImrDiMessageNode(void).
>
> >From the looks of the stack, it looks like you are using Sun's
> SPARCworks compiler on Solaris?  We have seen similar errors in Purify
> using vector allocation and deletion.  FWIW, we have not experienced any
> noticeable problems from this, so it appears to be benign.
>
> We suspect that this is yet another in a long series of compiler bugs,
> and not a bug in omniORB.  In the latest patch series we received
> recently from Sun, they claim to have fixed a vector-delete bug that may
> resolve this problem, but we have not been able to get this patch series
> to work successfully :-(

Sorry, what problem did you have with the patch?

Thank you,
Saroj Mahapatra





***********************************************************************************
Bear Stearns is not responsible for any recommendation, solicitation, offer or
agreement or any information about any transaction, customer account or account
activity contained in this communication.
***********************************************************************************