[AGENT++] crash in Vb::set_value

Loridon, Martin martin.loridon at barco.com
Wed Jan 5 10:31:18 CET 2005


Hello all,

 

Sometimes my (multi-threaded) agent running on a Win32 platform in VC++6.0
debug environment crashes. (access violation)

This happens when I try to change a MibLeaf value. See the code parts below
gathered from snmp++ sources.

agent++ version is 3.5.19 and snmp++ 3.2.13

 

/**

   * Get the value of the receiver.

   * 

   * @param i - A reference to a long the receiver's value will be copied
in.  

   * @return SNMP_ERROR_SUCCESS on success.

   */

  virtual int                    get_value(long& i) const 

                                                             { return
get_value().get_value(i); }

 

 

 

 

Vbx MibLeaf::get_value() const

{

            Vbx vb(get_oid());

            if (value)

                        vb.set_value(*value);

 

            return vb;

}

 

  /**

   * Set the value using any SnmpSyntax object.

   */

  void set_value(const SnmpSyntax &val)

    { free_vb(); iv_vb_value = val.clone(); };

 

169:    void set_value(const SnmpSyntax &val)

170:      { free_vb(); iv_vb_value = val.clone(); };

004240B0   push        ebp

004240B1   mov         ebp,esp

004240B3   sub         esp,44h

004240B6   push        ebx

004240B7   push        esi

004240B8   push        edi

004240B9   push        ecx

004240BA   lea         edi,[ebp-44h]

004240BD   mov         ecx,11h

004240C2   mov         eax,0CCCCCCCCh

004240C7   rep stos    dword ptr [edi]

004240C9   pop         ecx

004240CA   mov         dword ptr [ebp-4],ecx

004240CD   mov         ecx,dword ptr [ebp-4]

004240D0   call        Vb::free_vb (0042dc40)

004240D5   mov         eax,dword ptr [ebp+8]

004240D8   mov         edx,dword ptr [eax]

004240DA   mov         esi,esp

004240DC   mov         ecx,dword ptr [ebp+8]

004240DF   call        dword ptr [edx+8]

004240E2   cmp         esi,esp

004240E4   call        __chkesp (004b8d70)

004240E9   mov         ecx,dword ptr [ebp-4]

004240EC   mov         dword ptr [ecx+14h],eax

004240EF   pop         edi

004240F0   pop         esi

004240F1   pop         ebx

004240F2   add         esp,44h

004240F5   cmp         ebp,esp

004240F7   call        __chkesp (004b8d70)

004240FC   mov         esp,ebp

004240FE   pop         ebp

004240FF   ret         4

004240DF   call        dword ptr [edx+8] edx register contains rubbish

I wonder if this could have something to do with the return of vb in Vbx
MibLeaf::get_value() const

which is in fact a local variable and also be destructed by leaving the
function.

Is this a bug or am I wrong?

Martin Loridon 
Software Development Engineer 
Barco Digital Cinema 
Noordlaan 5 
B-8520 Kuurne, Belgium 
Tel:  +32 (0)56 36 87 17 
Fax: +32 (0)56 36 88 62 
mailto:martin.loridon at barco.com <mailto:martin.loridon at barco.com>  
www.d-cine.barco.com 
www.barco.com 

 

- - - - - - - DISCLAIMER - - - - - - - - 
Unless indicated otherwise, the information contained in this message is
privileged and confidential, and is intended only for the use of the
addressee(s) named above and others who have been specifically authorized to
receive it. If you are not the intended recipient, you are hereby notified
that any dissemination, distribution or copying of this message and/or
attachments is strictly prohibited. The company accepts no liability for any
damage caused by any virus transmitted by this email. Furthermore, the
company does not warrant a proper and complete transmission of this
information, nor does it accept liability for any delays. If you have
received this message in error, please contact the sender and delete the
message. Thank you.



More information about the AGENTPP mailing list