GetLastError 1359 (Interner Fehler)
-
Hallo Leute,
bin langsam am Verzweifeln und bitte um eure Hilfe!!!
ich habe eine unter Visual C++ 2008 kompilierte Dll (systemeigene). Diese wird als Plugin in eine Anwendung geladen. Die Anwendung verfügt über eine Plugin-Schnittstelle, die auch viele DLLs verwenden. Ich habe weder die Source-Dateien der Anwendung, sowei der Plugins.
Auf manchen Systemen stürzt die Anwednung beim Schließen ab:
Problem signature:
Problem Event Name: BEX
Application Name: app.exe
Application Version: 10.0.61637.0
Application Timestamp: 46fadb14
Fault Module Name: MyData.dll_unloaded
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 5062c7b2
Exception Offset: 6d5638f3
Exception Code: c0000005
Exception Data: 00000008
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1033Den Fehler kann ich nicht auf meinem Rechner reproduzieren. Für die Anwendung gibt es eine Ini-Datei, in der man die Reinfolge der Plugins festlegen kann. Wenn meine Dll an erster Stelle steht, kommt es nicht zu Absturz.
In meine log-Datei gebe ich die Error-ID, die von GetLastError zurückgegeben wird. Das ist die:
ID (1359) An internal error occurred
Der Fehler-Code ist schon beim ersten und jedem darauf folgenden Aufruf der DllMain da.
Bis jetzt hatte ich folgende Theorien:
- Es wird von der Anwendung, oder von einem Plugin eine Ausnahme ausgelöst, meine Dll versucht darauf zu reagieren (dll mit /EHsc kompiliert) ???
- Eines der Plugins verwendet eine Version der C++ Laufzeitbibliotheken, die sich von denen, die meine verwendet unterscheidet.???
- Irgendwas mit der Speicherverwaltung ???
Ich lasse mich gern belehren und bin für jeden Hinweis/Ratschlag dankbar.
Maria
-
Es sieht so aus, als ob Deine DLL etladen wurde, Du aber wohl vergessen hast irgendeine Callback oder sowas zu unregistrieren... deshalb stürzt es ab...
-
Vielen Dank
Den Gedanken hatte ich anfangs auch, oder, dass ich Speicher-Leichen hinterlasse.
Nur warum existiert der Fehlercode schon zu begin?Kann es denn mit den C++ Laufzeit-Bibliotheken zusammen hängen?
Die Hauptanwendung verwendet die MSVCR80.DLL, meine Dll die MSVCR90.DLL.
Kann man da nicht irgendwie einen Trick verwenden und die Fehlermeldung unterdrücken?