Einzelnen Beitrag anzeigen

stachelsau

Registriert seit: 28. Mai 2009
7 Beiträge
 
#1

Grund für EAccessViolation in finalization-Abschnitt finden

  Alt 31. Jul 2009, 12:46
Moin zusammen,

ich bin kurz vorm Verzweifeln wegen folgendem Problem:

Wenn ich mein Programm (gebastelt mit Delphi 7) beende, dann gibts eine EAccessViolation Exception. Auslöser ist wohl eines meiner Formulare, da die Exception nur dann geworfen wird, wenn ein bestimmtes Formular vorher offen war. Dummerweise finde ich aber den Punkt, an dem es tatsächlich knallt nicht, da dies erst in irgendeinem finalization-Abschnitt einer nicht zum Projekt gehörenden Unit passiert. D.h. ich bin danach auch nicht im Debug-Modus, sondern das Programm wird direkt zurückgesetzt und ich kann mir den Aufruf Stack nicht mehr ansehen.

Um das Problem einzukreisen habe ich zunächst MemCheck versucht, aber Überraschung: wenn MemCheck im Projekt ist, tritt der Fehler überhaupt nicht mehr auf!
Ok, MemCheck raus und FastMM rein und ich bekomme folgendes:
Zitat:
FastMM has detected an attempt to use an interface of a freed object. An access violation will now be raised in order to abort the current operation.

The current thread ID is 0x254, and the stack trace (return addresses) leading to this error is:
406C67 [system.pas][System][@IntfClear][17033]
432839 [classes.pas][Classes][TComponent.DestroyComponents][9853]
4B7FFB [Forms.pas][Forms][DoneApplication][1348]
404B32 [system.pas][System][@Halt0][11357]
Mir ist leider nicht so ganz klar, wie mir das beim Finden des Fehlers weiterhelfen kann, da ich in dem betreffenden Formular keine direkten Bezüge zu diesen Units habe. Auch die Tatsache, dass der Fehler mit MemCheck gar nicht erst auftritt, macht die Sache nicht eindeutiger. Hat jemand einen Tipp für mich, mit welchen Schritten ich an die Suche fortsetzen kann?

VG, Daniel
  Mit Zitat antworten Zitat