![]() |
Delphi-Version: XE
Memory Leak mit IBEvents
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:
Wer kann mir Tipps geben, wie ich hier weitersuchen kann.
--------------------------------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 Gruß Rainer |
AW: Memory Leak mit IBEvents
Lese dir mal die Meldung durch:
Code:
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.
FastMM has detected an error during a free block scan operation. The block header has been corrupted.
|
AW: Memory Leak mit IBEvents
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. |
AW: Memory Leak mit IBEvents
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. |
AW: Memory Leak mit IBEvents
Hallo,
ich habe mit XE einen fehlerhaften cast in IBEvents. Wahrscheinlich ist der Fehler ja schon länger drin.
Delphi-Quellcode:
Unter Umständen ist es dieser Fehler, der bei Dir gemeldet wird.
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; Lutz |
AW: Memory Leak mit IBEvents
Jepp, genau der isses, so wie es aussieht. Der Fehler ist weg.
Danke! Gruß Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz