AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung
Thema durchsuchen
Ansicht
Themen-Optionen

ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

Ein Thema von Andreas13 · begonnen am 5. Jul 2022 · letzter Beitrag vom 8. Jul 2022
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#11

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 6. Jul 2022, 13:46
Hallöle...
Zitat:
Zur Fehlersuche reicht mir FastMM4 völlig aus
...einen Callstack per Mail geschickt vom User ist nicht notwendig?
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 6. Jul 2022, 18:10
Nein. Bei mir teste ich das Programm, nicht der Kunde. Wenn da mal was ist, sind das übersehene Kleinigkeiten, die mit einer genauen Anleitung wie es zum Fehler kommt, immer schnell behoben sind. Habe all die Jahre, seit denen ich mit Delphi programmiere (seit Delphi 1), noch nie einen Callstack benötigt.

Memoryleaks gibt es generell keine bei dem Kunden, dafür sorge ich schon zur Programmierzeit mit sauberem Coden (immer abgesichertes Erstellen und Freigeben von Objekten, etc.). Eine Anwendung die Memoryleaks produziert, wird garnicht erst an Kunden ausgeliefert, sondern vorher gründlich getestet und bereinigt.

Geändert von Rolf Frei ( 6. Jul 2022 um 18:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#13

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 6. Jul 2022, 18:21
Nutzt du kein INDY/DataSnap? Da sind Speicherlecks drin.

Aber die bekam man nicht weg, also wurden sie einfach auf die Blacklist (RegisterExpectedMemoryLeak) gesetzt, damit sie niemanden stören.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 6. Jul 2022, 18:43
Nein nutze weder DataSnap noch Indy. Für beides nutze ich 3rd Party Software.

Es geht ja nicht um die Leaks die man wissentlich drin hat und vom MM ignoriert werden. Es geht um eigene Leaks, die man durch unsauberes programmieren verursacht. Und für sonstige Fehler wie AV's bekomme ich vom Kunden genaue Anweisungen und kann das in der Regel problemlos reproduzieren und beheben.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#15

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 6. Jul 2022, 22:36
In diesem Video erkläre ich auch noch die eine oder andere Funktion vom FastMM:
https://youtu.be/o0yZgQoV8MA
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#16

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 6. Jul 2022, 23:38
@Generic
Danke, Bernd!
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 7. Jul 2022, 00:23
Erwähnenswert ist auch unter "Demos\Usage Tracker" das Fenster mit detaillierten Speicherinformationen, das man auch in einer eigenen Anwendung anzeigen kann.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#18

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 7. Jul 2022, 23:34
Hallo again,
vom ursprünglichen Speicherleck (24 x 68 Bytes) konnte ich mit FastMM4 auf Anhieb 21 Fragmente beheben. Die restlichen 3 x 68 Bytes sind aber sehr hartnäckig:
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer): 53 - 68 bytes: Unknown x 3
und ich kann sie leider immer noch nicht genau aufspüren.

Mir kommt bereits die erste (s. Bild-1.jpg) der drei Meldungen etwas merkwürdig vor:
1):
415802 [FastMM4.pas][FastMM4][CalculateHeaderCheckSum$qqrp29Fastmm4.TFullDebugBl ockHeader][9143]

Wieso erscheint auch FastMM4 in dieser Liste? FastMM4 steht bei mir in meiner uses-Liste an der ersten Stelle:
Delphi-Quellcode:
uses
  {$IfDef DEBUG}
    FastMM4,
  {$EndIf }
  System.SysUtils,
  Winapi.MMSystem,
  PDBiA_Type,
  PDBiA_Mathe
Hat etwa auch FastMM4 einen "eigenen" Speicherleck?

2):
5D3A35 [MP_Real.pas][mp_real][mpf_initp3$qqrr17Mp_types.mp_floatt1t1i][3756]
MP_Real.pas steht gar nicht in der uses-Liste des Projektes, sondern in der von PDBiA_Mathe.pas.

Im ersten der drei Abschnitte der Fehlerberichte fehlt die Zeile
5FDC1D [PDBiA_Mathe.pas][PDBiA_Mathe][MPAF_Init$qqrr17Mp_types.mp_floatt1t1i][19140], in den darauffolgenden zwei ist sie bereits (korrekterweise) vorhanden (s. Bild-2.jpg). Den „memory dump” habe ich hier weggelassen: Ich kann damit leider gar nichts anfangen, genau so wie mit der allocation number.

Allerdings bemängelt auch madExcept 3 gleichgroße Speicherlecks, nur mit einer viel längeren Liste von Procedure-Aufrufen.

3):
Merkwürdig ist auch, daß in der Übersichtsmeldung stets von "53 - 68 bytes" die Rede ist, im Detail-Bericht es aber immer genau 68 Bytes sind. Was stimmt jetzt? (Die vermutliche Speicherleck-verursachende Routine mpf_initp3(..) belegt eigentlich nur 3-mal 24 = 72 Bytes.)

Vielleicht hat jemand von Euch noch eine weitere rettende Idee?

Danke & Grüße
Andreas
Miniaturansicht angehängter Grafiken
bild-1.jpg   bild-2.jpg  
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#19

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 8. Jul 2022, 03:19
Zitat:
Merkwürdig ist auch, daß in der Übersichtsmeldung stets von "53 - 68 bytes" die
Das ist nicht merkwürdig.

Zur Optimierung gibt es im FastMM mehrere SmallBlock-Verwaltungen für kleine Speicherbereiche.
In dieser BlockGruppe landen Speicheranforderungen von 53 bis 68 Bytes. (größere und kleinere Anforderungen laden in anderen BlockGruppen)
Und dann gibt es auch noch größere MediumBlocks (aufwändiger dynamisch unterteilt) und ganz große LargeBlocks, welche nicht geteilt sind.

stell dir es so vor:
FastMM holt bei den SmallBlocks immer 64KB vom Windows, teilt das in feste Blöcke auf und gibt diese Kleinteile an dein Programm weiter, da Windows nicht ganz schnell ist und im System der Speicher auch nicht so kleinteilig verwaltet wird. ()
ab Zeile 2000 > https://github.com/pleriche/FastMM4/...er/FastMM4.pas

Die "Kurzübersicht" schaut nur schnell darauf, in welchem SmallBlock dieser Speicher/Pointer liegt, also hier in einem SmallBlock für 53-68 Bytes.
Mit zusätzlichen Debuginfos wird dann auch für jeden einzelnen Teil explizit gespeichert, wie groß das genau war und von wo es angefordert wurde (Stacktrace).


Kann gut sein, dass im mp_arith von Gammatester ein paar Fehlerchen drin sind.
Nur er (Wolfgang Ehrhardt) wird es nicht mehr beheben können.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Jul 2022 um 18:56 Uhr)
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#20

AW: ReportMemoryLeaksOnShutdown:= True – Deutung der Speicherleck-Meldung

  Alt 8. Jul 2022, 09:11
Danke für die Klarstellung der Größe der Block-Gruppen, Himitsu.

Kann gut sein, dass im mp_arith von Gammatester ein paar Fehlerchen drin sind. Nur er (Wolfgang Ehrhardt) wird es nicht mehr beheben können.
Leider,
3 – 4 kleinere Fehler in einigen seiner Bibliotheken habe ich bereits behoben. Aber diesmal bin ich ratlos, zumal der Speicherleck selbst von den Testdaten abzuhängen scheint (s. # 1).
Gruß,
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 ( 8. Jul 2022 um 10:04 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15:50 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