AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Speicherlecks Bug in D6 oder FastMM4?
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherlecks Bug in D6 oder FastMM4?

Ein Thema von RaSoWa1 · begonnen am 1. Sep 2009 · letzter Beitrag vom 6. Sep 2009
Antwort Antwort
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

Speicherlecks Bug in D6 oder FastMM4?

  Alt 1. Sep 2009, 16:45
Hallo,

wegen eines Speicherproblems in einem Programm habe ich, das hier im Forum oft empfohlene FastMM4, installiert.

Ich bin dabei auf folgendes gestoßen:
FastMM4 meldet Speicherlecks (Meldung im Anhang) bei einem Prog (Code siehe unten), das nur aus einem Formular besteht!

Ist das ein Bug von D6 oder FastMM4?
Oder mache ich was falsch?

Gruß
Klaus

Projekt1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.


program Project1;

uses
  FastMM4 in '..\Lib\FastMM\FastMM4.pas',
  Forms,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Miniaturansicht angehängter Grafiken
speicherleck_204.jpg  
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Speicherlecks Bug in D6 oder FastMM4?

  Alt 1. Sep 2009, 17:17
AFAIK habe ich in der HelpIntfs.pas was gefixt. Frag mich morgen nochmal damit ich dir den DIFF senden kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Speicherlecks Bug in D6 oder FastMM4?

  Alt 1. Sep 2009, 17:50
Um detailierte Informationen von FastMm4 zu bekommen, muß ich die Delphi 6 Runtime Library Update 2 installieren. Ich habe es mir gerade heruntergeladen, aber noch nicht installiert.

Würde damit das Bug beseitigt?
Klaus
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Speicherlecks Bug in D6 oder FastMM4?

  Alt 3. Sep 2009, 09:57
Hallo,

ich habe jetzt das Update 2 und 3 für meine D6-Version installiert, aber das Problem ist damit nicht beseitigt.

Muß oder kann man damit leben?

Als Anhang das ausfürliche Protokoll von FastMM4. Leider kann ich mit den ganzen Speicheradressen nichts anfangen. Auf solche Tiefen der Programmierung bin ich nocht nicht vorgestoßen.

@Bernhard Geyer
Zitat:
AFAIK habe ich in der HelpIntfs.pas was gefixt. Frag mich morgen nochmal damit ich dir den DIFF senden kann.
Es wäre nett, wenn du mir was über den BUG mitteilen könntest.

Danke im Vorraus.
Gruß
Klaus
Angehängte Dateien
Dateityp: txt project1_memorymanager_eventlog_778.txt (33,6 KB, 3x aufgerufen)
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Speicherlecks Bug in D6 oder FastMM4?

  Alt 3. Sep 2009, 10:04
Neue Prozedur:
Delphi-Quellcode:
procedure EnsureHelpManager;
begin
  if HelpManager = nil then
    HelpManager := THelpManager.Create;
end;
In Funktion RegisterViewer/GetHelpSystem den Aufruf von
Delphi-Quellcode:
if not Assigned(HelpManager) then
  ...
durch
    EnsureHelpManager; ersetzen

In Methode THelpViewerNode.Create und THelpManager.AssignHelpSelector den Aufruf von _AddRef löschen

und in THelpManager.Release die Schleifen
for i := 0 to ... auf
  .Count - 1 downto 0 umstellen.

Neuere Delphi-Versionen sind entsprechend gefixt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Speicherlecks Bug in D6 oder FastMM4?

  Alt 6. Sep 2009, 14:57
Hallo,

Dank der Hilfe von Bernhard Geyer, Google und vielen Tests habe ich das Problem gelöst.
Letztendlich haben nur 2 kleine Änderungen zum Erfolg geführt. FastMM4 meldet nun keine Lecks mehr.

Für alle die es interessiert:
1. unit HelpIntfs
Delphi-Quellcode:
function GetHelpSystem(out System : IHelpSystem) : Integer;
begin
  if not Assigned(HelpManager) then
  begin
    HelpManager := THelpManager.Create;
// HelpManager._AddRef; // diese Zeile entfernen
  end;

  System := HelpManager as IHelpSystem;
  Result := 0;
end;
2. unit WinHelpViewer
Delphi-Quellcode:
finalization
  if Assigned(HelpViewer.FHelpManager) then
  begin
    HelpViewer.InternalShutDown;
  end;
  if Assigned(WinHelpTester) then
  begin
    WinHelpTester := nil;
  end;
  HelpViewer.FreeInstance; // diese zeile einfügen
  HelpViewer := nil; // diese zeile einfügen
end.
Gruß
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Speicherlecks Bug in D6 oder FastMM4?

  Alt 6. Sep 2009, 15:13
heißt das THelpManager stellt ein Interface dar und die Variable HelpManager ist als Objekt (THelpManager) definiert?

und wenn du schon HelpManager._AddRef nutzt, dann solltest du diese Referenz auch irgendwann wieder reigeben (HelpManager._Release
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 03:49 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