AGB  ·  Datenschutz  ·  Impressum  







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

Memory Leak mit IBEvents

Ein Thema von Rainer Wolff · begonnen am 4. Mai 2011 · letzter Beitrag vom 5. Mai 2011
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Memory Leak mit IBEvents

  Alt 4. Mai 2011, 15:07
Delphi-Version: XE
Hallo,

ich hab hier mal wieder ein sehr seltsames Phänomen:

Ich habe ein Memoryleak in meiner Application und zur Fehlersuche mal alles auskommentiert, was stört. Im Prinzip besteht mein Projekt jetzt nur noch aus zwei Datenmodulen, von denen das eine die grundsätzliche Datenbankkonfiguration enthält, und das andere formularspezifischere Querys etc.
Auf dem zweiten Formular ist auch eine IBEvents-Komponente, wenn ich die lösche, ist das Memoryleak verschwunden. Aber da steht auch kein Quellcode dahinter, der irgendwie Speicher bucht oder freigibt.

FastMM4 (FullDebugmode) sagt:
Code:
--------------------------------2011/5/4 14:52:25--------------------------------
FastMM has detected an error during a free block scan operation. The block header has been corrupted.

The current thread ID is 0xD30, and the stack trace (return addresses) leading to this error is:
414260 [FastMM4.pas][FastMM4][FastMM4.CheckBlocksOnShutdown][8114]
414FE6 [FastMM4.pas][FastMM4][FastMM4.FinalizeMemoryManager][9184]
41502E [FastMM4.pas][FastMM4][FastMM4.Finalization][9265]
407B28 [System.pas][System][System.FinalizeUnits][15309]
407F02 [System.pas][System][System.@Halt0][16304]
ACA881 [Prodavi][Prodavi.Prodavi][215]
76CE3C45 [BaseThreadInitThunk]
76FD37F5 [Unknown function at RtlInitializeExceptionChain]
76FD37C8 [Unknown function at RtlInitializeExceptionChain]

Current memory dump of 256 bytes starting at pointer address 7FEB6250:
64 82 AE 00 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
Wer kann mir Tipps geben, wie ich hier weitersuchen kann.

Gruß Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Memory Leak mit IBEvents

  Alt 4. Mai 2011, 15:11
Lese dir mal die Meldung durch:

Code:
FastMM has detected an error during a free block scan operation. The block header has been corrupted.
D.h. du hast keine Speicherlücke sondern eine Funktion/Methode schreibt über eigentlich reservierte Speicherbereiche hinaus und zerstört damit die "Sicherungsblöcke" von FastMM um solche ungültigen Speicherschreibzugriffe zu erkennen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Memory Leak mit IBEvents

  Alt 4. Mai 2011, 15:34
Jo, aber der Zusammenhang, bzw. wie ich das Problem näher einkreisen kann, ist mir trotzdem weiterhin schleierhaft.
Wie schon geschrieben, passiert in den beiden Units eigentlich nicht viel, ausser dass ein paar Komponenten initialsiert werden. Und wenn ich eben die IBEvents-Komponente entferne, ist der Zugriffsfehler weg.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Memory Leak mit IBEvents

  Alt 4. Mai 2011, 15:54
Sowas passiert auch, wenn man auf Objekte zugreift, nachdem diese freigegeben wurden.

FastMM hat die Bereiche mit 80 gefüllt und so wie es aussieht, wurde in diesen Speicherbereich ein "Pointer" reingeschrieben.
Das könnte z.B. die Typ-Zeiger am Anfang einer Klasse sein.
$2B or not $2B

Geändert von himitsu ( 4. Mai 2011 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Memory Leak mit IBEvents

  Alt 4. Mai 2011, 19:17
Hallo,

ich habe mit XE einen fehlerhaften cast in IBEvents. Wahrscheinlich ist der Fehler ja schon länger drin.

Delphi-Quellcode:
destructor TIBEvents.Destroy;
begin
  try
    if Registered then
      UnRegisterEvents;
  except
    // silence any exceptions which might be raised
    // by UnRegisterEvents during destruction
  end;
  If Assigned(FDatabase) then
    FDatabase.RemoveEventNotifier(Self);
  FThreads.Free;
// LL 06.04.2011
// IF Assigned(FEvents) then
// TStringList(FEvents).OnChange := nil;
  FEvents.Free;
// LL 06.04.2011
  IF Assigned(FUniEvents) then
    TStringList(FUniEvents).OnChange := nil;
  FUniEvents.Free;
  FGDSLibrary := nil;
  inherited Destroy;
end;
Unter Umständen ist es dieser Fehler, der bei Dir gemeldet wird.

Lutz
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Memory Leak mit IBEvents

  Alt 5. Mai 2011, 09:01
Jepp, genau der isses, so wie es aussieht. Der Fehler ist weg.

Danke!

Gruß Rainer
  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 08:00 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