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!
-
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 retDer 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???