AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FastMM4 und Beenden der Application

Ein Thema von AJ_Oldendorf · begonnen am 28. Jan 2013 · letzter Beitrag vom 29. Jan 2013
Antwort Antwort
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#1

FastMM4 und Beenden der Application

  Alt 28. Jan 2013, 13:18
Hallo,
ich nutze FastMM(499).
Allerdings habe ich eine Frage zu dem Report, der am Ende der Anwendung angezeigt wird.
In der Anwendung werden relativ viele Threads erstellt, die beim Beenden der Anwendung terminiert werden. Das geschieht über Windows Messages, welche die Threads dann abfragen und sich selber terminieren. Funktioniert auch soweit nur habe ich festgestellt, dass ich an die ganzen Threads die Terminierung absende, dann aber kurze Zeit später der Report von FastMM auftaucht mit gefundenen Speicherlecks und dann auf einmal Delphi in den Breakpoint für das abfangen der Terminierungsmessage rein kommt. Die Application läuft also noch und die Threads bekommen die Nachricht zum beenden. Nur zeigt mir FastMM leider zu früh die Speicherlecks an, welche aber definitiv keine sind. Die Threads beenden sich ja, nur FastMM wartet nicht lang genug ab, bis die Application wird beendet ist. Kennt dieses Verhalten jemand oder kann mir ein Tip geben?

Grüße
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: FastMM4 und Beenden der Application

  Alt 28. Jan 2013, 14:12
Wartet Deine Anwendung denn beim Beenden auf diese Threads, oder geht sie einfach davon aus, dass diese die Info schnell genug bekommen?

Eigentlich ist FastMM da ein gutes Indiz für Fehler eben dies betreffend, denn FastMM springt ja nicht von selbst an, sondern afaik (kann von hier nicht nachsehen) per finalization-Abschnitt der FastMM-Unit.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#3

AW: FastMM4 und Beenden der Application

  Alt 28. Jan 2013, 14:19
Eigentlich wartet die Anwendung darauf...
Ich kann ja sogar noch weiter debuggen mit F8 / F7 wenn bereits das Report-Fenster von FastMM offen ist. Das könnte ich ja nicht, wenn die Application wirklich beendet wäre oder?

Grüße
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#4

AW: FastMM4 und Beenden der Application

  Alt 28. Jan 2013, 15:35
Jain... wenn ich recht haben sollte (wie gesagt aktuell nur nach Erinnerung) wird das Fenster vom finalization-Abschnitt der Unit FastMM aufgerufen. Natürlich kann an der Stelle noch debugged werden, den die Message-Box "unterbricht" dern Hauptthread ja nur, bis der Benutzer den Dialog wegklickt... sowohl der Main-Thread nach dieser Stelle (wenn Unit-Reihenfolge inkorrekt z.B. die finalization-Parts anderer Units, und natürlich FastMM-finalization selber) als auch "beliebig" in noch laufenden Threads. Das Fenster ist ja noch Teil des Programmes, wenn auch ein Teil, der möglichst am Ende kommen sollte (es sei denn, der User hat parallele Threads, die länger als der Hauptthread laufen, oder bei der Reihenfolge der Units etwas durcheinandergebracht).
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: FastMM4 und Beenden der Application

  Alt 28. Jan 2013, 20:38
In der Anwendung werden relativ viele Threads erstellt, die beim Beenden der Anwendung terminiert werden. Das geschieht über Windows Messages, welche die Threads dann abfragen und sich selber terminieren
Eigentlich müsste deine Anwendung alle laufenden Thread in einer Liste speichern.
Beim Programmende wird dann von jedem Thread die Methode Terminate aufgeraufen.
(Windows Messages würde ich für diesen Zweck nicht verwenden)
Die Threads fragen periodisch das property Terminated ab und beenden sich selber.
Da es einige Zeit dauern kann bis alle Threads reagiert haben sollte der Hauptthread bis zu 3s warten.
Dauert es länger, sollte der Hauptthread weiterlaufen und sich beenden.
Die hängenden Threads werden dann von Windows gewaltsam beendet; was dann natürlich zu Speicher-/Resourcenlecks führt, die aber ebenfalls von Windows entsorgt werden.

Geändert von sx2008 (28. Jan 2013 um 20:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: FastMM4 und Beenden der Application

  Alt 28. Jan 2013, 21:23
Hast du die Unit FastMM vor allen anderen eingefügt?
Das heißt nicht vor allen anderen Units der MainForm, sondern vor allen anderen Units des Hauptquellcodes (Menü/Project/View Source)!

Dann mach FastMM auch keine Fehler.
Und das die Threads nen Speicherleck sind, muss nicht sein, nur in dem Moment halt, wo FastMM anschlägt sind Sie das. Und so wie du sagst entfernst du die Instanzen ja erst beim Beenden des Programms. Auf gut Deutsch, die Threads sind Speicherlecks auch dann, wenn vor dem Beenden des Programm nen ganz anderer Fehler für den Absturz des Programms sorgt, denn genau dann werden Sie ja nicht mehr entfernt.

Ohne jetzt den Quelltext zu sehen kann man aber keine genaueren Angaben machen.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#7

AW: FastMM4 und Beenden der Application

  Alt 29. Jan 2013, 14:10
Hallo,
ja habe die Unit ganz oben eingefügt.
Ich bin auch schon bisschen weiter gekommen, stehe aber vor einem neuen Problem. Dies kommt aber in einem neuen Thread.

Gruß
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz