AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FastMM Memory Error Detected beim Debuggen
Thema durchsuchen
Ansicht
Themen-Optionen

FastMM Memory Error Detected beim Debuggen

Ein Thema von TiGü · begonnen am 8. Aug 2012 · letzter Beitrag vom 13. Aug 2012
Antwort Antwort
Seite 2 von 3     12 3      
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#11

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 14:34
Benutzen den Delphi und deine Anwendung die gleiche FastMM-Instanz?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 14:41
Benutzen den Delphi und deine Anwendung die gleiche FastMM-Instanz?
Meinst du das:

EXE und DLL greifen auf die gleiche FastMM4.pas/-.dcu zu und auch natürlich auf die gleiche FastMM_FullDebugMode.dll (EXE und DLL liegen auch im gleichen Verzeichnis).
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 16:13
Ich zweifle langsam an mir?!
Entweder FastMM hat nen schweren Bug oder die VCL-Sourcen haben nen Sprung.

Beispielprogramm OHNE DLL Beteiligung im Anhang (mit FastMM_FullDebug.dll).

Delphi-Quellcode:
procedure TMainForm.Test;
var
 str : string;
begin
  str := edt1.Text;
  lbl1.Caption := str;
end;
Wenn ich hier reindebugge und per MouseOver mir die Werte für edt1.Text und für lbl1.Caption im Debug-Hint anzeigen lasse, bekomme ich beim Beenden einen Memory Leak Report für 2 x UnicodeStrings:
Code:
--------------------------------2012/8/10 16:15:27--------------------------------
A memory block has been leaked. The size is: 68

This block was allocated by thread 0x12E4, and the stack trace (return addresses) at the time was:
40618B
405894 
4493CF [Controls.pas][Controls][Controls.TControl.GetText][5554]
20036 
46C6CC [Main.pas][Main][Main.TMainForm.btn1Click][39]
44B049 [Controls.pas][Controls][Controls.TControl.Click][6758]
438903 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.Click][4421]
439371 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.CNCommand][4858]
44AADD [Controls.pas][Controls][Controls.TControl.WndProc][6642]
760525A8 [NotifyWinEvent]
76072FCA [Unknown function at SetKeyboardState]

The block is currently used for an object of class: UnicodeString

The allocation number is: 650

--------------------------------2012/8/10 16:15:27--------------------------------
A memory block has been leaked. The size is: 68

This block was allocated by thread 0x12E4, and the stack trace (return addresses) at the time was:
40618B
405894 
4493CF [Controls.pas][Controls][Controls.TControl.GetText][5554]
20036 
46C6CC [Main.pas][Main][Main.TMainForm.btn1Click][39]
44B049 [Controls.pas][Controls][Controls.TControl.Click][6758]
438903 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.Click][4421]
439371 [StdCtrls.pas][StdCtrls][StdCtrls.TCustomButton.CNCommand][4858]
44AADD [Controls.pas][Controls][Controls.TControl.WndProc][6642]
760525A8 [NotifyWinEvent]
76072FCA [Unknown function at SetKeyboardState]

The block is currently used for an object of class: UnicodeString

The allocation number is: 656

--------------------------------2012/8/10 16:15:27--------------------------------
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

53 - 68 bytes: UnicodeString x 2

Note: This memory leak check is only performed if Delphi is currently running on the same computer. Memory leak detail is logged to a text file in the same folder as this application. To disable this memory leak check, undefine "EnableMemoryLeakReporting".
Angehängte Dateien
Dateityp: zip LittleTestProgram.zip (441,1 KB, 4x aufgerufen)

Geändert von TiGü (10. Aug 2012 um 16:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 16:31
Dieses Verhalten von FastMM kenne ich aber auch: ReportMemoryLeaksOnShutdown auf true, Breakpoint gesetzt, Leaks werden gemeldet. Breakpoint entfernt, Leaks verschwinden. Woran das liegt, wüsste ich auch gern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#15

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 17:18
Wäre es denkbar, das Delphi zum Debuggen/Anzeigen Speicher über FastMM anfordert, aber nicht freigibt, wenn die Anwendung beendet ist, sondern entweder später oder eben überhaupt nicht?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

AW: FastMM Memory Error Detected beim Debuggen

  Alt 10. Aug 2012, 17:44
Ausschließen würde ich das nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: FastMM Memory Error Detected beim Debuggen

  Alt 12. Aug 2012, 19:04
Schade, dass das Thema auf kein Interesse stößt.

Verwendet denn sonst keiner FastMM4 und kennt dieses Problem und eine mögliche Lösung?

Im Anhang nochmal das ursprüngliche Beispielprojekt als ZIP-Archiv.
Ich habe es so angepasst und mit allen notwendigen Dateien versehen, dass man es nur noch runterladen, entpacken, Projektgruppe öffnen und beide Projekte erzeugen muss.

Es wäre einfach nur nett, wenn jemand seine IDE anwerfen könnte und das Problem nachvollzieht.
Hier zuhause habe ich es auch mit dem RAD Studio XE erlebt.

Vielleicht hätte ich auch einen reißerischen Titel wählen sollen!
So à la "Brauche Hilfe um diesen String auseinanderzubasteln" oder "In welche Ecke der Form gehört die visuelle Datenbank-Komponente"...

Übrigens funktioniert der Debug-Hint per MouseOver, wenn man den FullDebugMode auschaltet, aber ohne ist ja FastMM4 ohne wirkliche Funktion.
Angehängte Dateien
Dateityp: zip FastMM4Crash.zip (278,8 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: FastMM Memory Error Detected beim Debuggen

  Alt 12. Aug 2012, 19:29
Habe es malprobiert...
Die Hints werden mit den richtigen Werten angezeigt (Caption,Text). Nach Beendigung...
Zitat:
---------------------------
TheProgram.exe: Memory Leak Detected
---------------------------
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):



21 - 36 bytes: UnicodeString x 1



Note: Memory leak detail is logged to a text file in the same folder as this application. To disable this memory leak check, undefine "EnableMemoryLeakReporting".


---------------------------
OK
---------------------------
Bei Beenden ohne Breakpoint kein Leak.

... interessantes Ding das.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FastMM Memory Error Detected beim Debuggen

  Alt 12. Aug 2012, 19:54
Stell doch erstmal dein FastMM ordentlich ein.

Speziell folgende Punkte sehn nicht so gut aus:
Zitat von deine FastMM4Options.inc:
Delphi-Quellcode:
{.$define ShareMM}

{.$define ShareMMIfLibrary}

{.$AttemptToUseSharedMM}

{Define this to enable backward compatibility for the memory manager sharing
mechanism used by Delphi 2006 and 2007, as well as older FastMM versions.}

{$define EnableBackwardCompatibleMMSharing}

Wenn dir der interne FastMM ausreichent, dann verwende einfach die SimpleShareMem.pas .


[add]
Wenn ich das ReportMemoryLeaksOnShutdown := DebugHook <> 0; in der EXE weglasse, dann gibt es keine Meldung. (XE2-Win32)
Vermutlich hängt sich hier der Debugger an den Speichermanager in der EXE, obwohl du eigentlich den der DLL nutzt.

Wenn ich das richtog gesehn hab, gibt es ein Problem in der SysUtils, wo nachdem beide MemoryManager freigegeben wurden noch versucht wird ein String freizugeben.
Probier mal was passiert, wenn du die Init-Initialisationsreihenfolge nicht durcheinanderbringst und in der DLLMain das uses MyForm; in das Interface verschiebst.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Aug 2012 um 20:33 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: FastMM Memory Error Detected beim Debuggen

  Alt 13. Aug 2012, 10:14
Stell doch erstmal dein FastMM ordentlich ein...
Weder das Entfernen des ReportMemoryLeaksOnShutdown-Flags, noch das Verschieben der Uses-Klausel führten zum Erfolg.
Jedoch ist der Hinweis die Optionen ShareMM, ShareMMIfLibrary und AttemptToUseSharedMM zu aktivieren die Lösung!
Vielen Dank dafür!
Es müssen auch alle drei Optionen aktiviert sein.
Wenn eine fehlt, kommt es weiterhin zu dem Fehler.

Aber warum ist das so? Ich würde es gerne verstehen!
Wo kann ich mich genauer über das Thema Memory Manager informieren?
Die Doku von Emba ist etwas nichtssagend in der Hinsicht, oder aber ich finde nicht die richtigen Einträge im Wiki dazu.
Hat jemand weiterführende Lektüre?
  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 19:52 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