access violation at read of ... fffffff8



  • Hallo,

    ein C++-Programm läuft einwandfrei, aber auf bestimmten Rechnern erhält man eine Fehlermeldung mit access violation wegen dem Wert fffffff8 im EAX-Register.

    Könnte der Fehler etwas mit einer Betriebssystemeinstellung (WinXP...) oder Systemeinstellung oder Bios-Einstellung zu tun haben??

    Warum läuft das Programm auf dem einen WinXP-Rechner u. auf einem anderen z.B. nicht?

    Hat der Wert fffffff8 irgend etwas mit virtuellem Speicher zu tun?

    Danke für eure Hilfe!


  • Mod

    Dein Zeiger, den Du übergibst ist ungültig.
    Das hat nichts mit Deinem Betriebssystem zu tun sondern mit einem Programmfehler!
    Lass einen Crashdump erzeugen oder debugge remote.



  • Oder falls du nichts findest zeig doch mal den Code.
    Falls er nicht zu groß ist ^^



  • Danke für die Info.

    Aber warum funzt das Programm auf dem einen Rechner u. nicht auf dem anderen mit gleichem OS?



  • Vermutlich Zufall... Du verwendest vermutlich einen nicht initialierten Speicherbereiche...



  • hört sich nach einem zu kleinem oder ungültigem speicherbereich an



  • Hier einmal aus dem Dump ein Auszug mit dem Fehler:

    Funktion: TIGHTVNCX
            100017dc 0210             add     dl,[eax]
            100017de 750d             jnz     TIGHTVNCX+0x17ed (100017ed)
            100017e0 ff742404         push    dword ptr [esp+0x4]
            100017e4 51               push    ecx
            100017e5 ff3550ed0210     push    dword ptr [TIGHTVNCX+0x2ed50 (1002ed50)]
            100017eb eb0b             jmp     TIGHTVNCX+0x17f8 (100017f8)
            100017ed 8b442404         mov     eax,[esp+0x4]
            100017f1 83c0f8           add     eax,0xfffffff8
            100017f4 50               push    eax
            100017f5 51               push    ecx
    FEHLER ->100017f6 ff30             push    dword ptr [eax]   ds:0023:fffffff8=????????
            100017f8 ff1564710210     call    dword ptr [TIGHTVNCX+0x27164 (10027164)]
            100017fe c3               ret
            100017ff ff742404         push    dword ptr [esp+0x4]
            10001803 e81affffff       call    TIGHTVNCX+0x1722 (10001722)
            10001808 59               pop     ecx
            10001809 c3               ret
            1000180a ff742404         push    dword ptr [esp+0x4]
            1000180e e8c3ffffff       call    TIGHTVNCX+0x17d6 (100017d6)
            10001813 59               pop     ecx
            10001814 c3               ret
    

    Der Fehler tritt bei der Ausführung der TIGHTVNCX-ActiveX-Komponente auf. Dabei wohl bei dem Ereignis "Disconnected" bzw. "Connected".
    Quellcodeauszug der Komponente:

    #include <utilcls.h>
    #include <olectl.h>
    #include <ocidl.h>
    #if defined(USING_ATLVCL) || defined(USING_ATL)
    #if !defined(__TLB_NO_EVENT_WRAPPERS)
    #include <atl/atlmod.h>
    #endif
    #endif
    
    #define LIBID_OF_VNCViewX (&LIBID_TIGHTVNCXLib)
    #define LIBID_OF_VNCVievXPPG (&LIBID_TIGHTVNCXLib)
    // *********************************************************************//
    // Schnittstelle: _IVNCViewXEvents
    // Flags:     (4096) Dispatchable
    // GUID:      {DF95740A-9D9A-4C97-8A6C-E2C4AADE6066}
    // *********************************************************************//
    interface _IVNCViewXEvents : public TDispWrapper<IDispatch>
    {
      void __fastcall Password()
      {
        _TDispID _dispid(/* Password */ DISPID(1));
        OleProcedure(_dispid);
      }
    
      void __fastcall Error(BSTR message/*[out]*/)
      {
        _TDispID _dispid(/* Error */ DISPID(2));
        TAutoArgs<1> _args;
        _args[1] = message /*[VT_BSTR:0]*/;
        OleProcedure(_dispid, _args);
      }
    
      void __fastcall Connected(BSTR host/*[out]*/)
      {
        _TDispID _dispid(/* Connected */ DISPID(3));
        TAutoArgs<1> _args;
        _args[1] = host /*[VT_BSTR:0]*/;
        OleProcedure(_dispid, _args);
      }
    
      void __fastcall Disconnected()
      {
        _TDispID _dispid(/* Disconnected */ DISPID(4));
        OleProcedure(_dispid);
      }
    
    };
    // *********************************************************************//
    // Schnittstelle: IVNCViewX
    // Flags:     (4416) Dual OleAutomation Dispatchable
    // GUID:      {9F004815-D61A-4F3E-BB07-72A9848D8E81}
    // *********************************************************************//
    interface IVNCViewX  : public IDispatch
    {
    public:
      // [1] property Connectstr
      virtual HRESULT STDMETHODCALLTYPE get_Connectstr(BSTR* pVal/*[out,retval]*/) = 0;
      // [1] property Connectstr
      virtual HRESULT STDMETHODCALLTYPE set_Connectstr(BSTR pVal/*[in]*/) = 0;
      // [2] property Port
      virtual HRESULT STDMETHODCALLTYPE get_Port(short* pVal/*[out,retval]*/) = 0;
      // [2] property Port
      virtual HRESULT STDMETHODCALLTYPE set_Port(short pVal/*[in]*/) = 0;
      // [3] property Display
      virtual HRESULT STDMETHODCALLTYPE get_Display(short* pVal/*[out,retval]*/) = 0;
      // [3] property Display
      virtual HRESULT STDMETHODCALLTYPE set_Display(short pVal/*[in]*/) = 0;
      // [6] method Connect
      virtual HRESULT STDMETHODCALLTYPE Connect(void) = 0;
      // [7] property Encode
      virtual HRESULT STDMETHODCALLTYPE Disconnect(void) = 0;
      // [18] property Host
    #if !defined(__TLB_NO_INTERFACE_WRAPPERS)
    // *********************************************************************//
    // DispIntf:  _IVNCViewXEvents
    // Flags:     (4096) Dispatchable
    // GUID:      {DF95740A-9D9A-4C97-8A6C-E2C4AADE6066}
    // *********************************************************************//
    template <class T>
    class _IVNCViewXEventsDispT : public TAutoDriver<_IVNCViewXEvents>
    {
    public:
      _IVNCViewXEventsDispT(){}
    
      void Attach(LPUNKNOWN punk)
      { m_Dispatch = static_cast<T*>(punk); }
    
      void            __fastcall Password();
      void            __fastcall Error(BSTR message/*[out]*/);
      void            __fastcall Connected(BSTR host/*[out]*/);
      void            __fastcall Disconnected();
    
    };
    // *********************************************************************//
    // DispIntf:  _IVNCViewXEvents
    // Flags:     (4096) Dispatchable
    // GUID:      {DF95740A-9D9A-4C97-8A6C-E2C4AADE6066}
    // *********************************************************************//
    template <class T> void __fastcall
    _IVNCViewXEventsDispT<T>::Password()
    {
      _TDispID _dispid(/* Password */ DISPID(1));
      OleProcedure(_dispid);
    }
    
    template <class T> void __fastcall
    _IVNCViewXEventsDispT<T>::Error(BSTR message/*[out]*/)
    {
      _TDispID _dispid(/* Error */ DISPID(2));
      TAutoArgs<1> _args;
      _args[1] = message /*[VT_BSTR:0]*/;
      OleProcedure(_dispid, _args);
    }
    
    template <class T> void __fastcall
    _IVNCViewXEventsDispT<T>::Connected(BSTR host/*[out]*/)
    {
      _TDispID _dispid(/* Connected */ DISPID(3));
      TAutoArgs<1> _args;
      _args[1] = host /*[VT_BSTR:0]*/;
      OleProcedure(_dispid, _args);
    }
    
    template <class T> void __fastcall
    _IVNCViewXEventsDispT<T>::Disconnected()
    {
      _TDispID _dispid(/* Disconnected */ DISPID(4));
      OleProcedure(_dispid);
    }
    


  • Keiner eine Idee???


Anmelden zum Antworten