Einzelnen Beitrag anzeigen

beginnerXE1

Registriert seit: 22. Dez 2020
10 Beiträge
 
#3

AW: OLE Access Violation - Race Conditions?

  Alt 30. Sep 2021, 22:38
Vielen Dank für deine Antwort!

Zunächst muss ich mich korrigieren: der Fehler tritt nicht frühstens bei "LoadFromFile" auf sondern bei "NewXMLDocument". Das habe ich vorhin durcheinander gebracht.
Zudem ist die Fehlermeldung zwar immer "EOleException - ungültige Zeigeroperation", aber im Detail wechselt "Exception.ToString" zwischen "Zugriffsverletzung an.. Lesen von..." und "Schwerwiegender Fehler". Gibt es da noch eine Möglichkeit, mehr Informationen zu erhalten?

Ich habe ansonsten deinen Vorschlag, mit einer CriticalSection mal probiert, allerdings ohne Ergebnis. Nachdem ich es gerade aber noch mal nachgelesen habe, war meine Implementierung wohl schlichtweg falsch, weil ich die CriticalSection als lokale Variable definiert hatte, was natürlich für separate Threads nichts bringt.
Leider habe ich aber auch nur Zugriff auf die .DLL und nicht auf das Hauptprogramm. Damit ist es mir doch gar nicht möglich, die CriticalSection so zu definieren, dass beide DLL-Threads sich das Lock teilen, oder?

Was ich aber natürlich machen kann, ist meine Lösung aus Fall 2 mit dem Mutex mal um NewXMLDocument zu setzen. Leider kam mir die Idee erst beim Aufschreiben der Antwort... Da ein Thread meistens durchkommt und erst der 2. abbricht und in der Hälfte der Fälle erst während der "Verarbeitung" einen Fehler erzeugt, grübel ich darüber, ob es wirklich an der Funktion "NewXMLDocument" liegen kann.
  Mit Zitat antworten Zitat