Search the Community
Showing results for tags 'fastmm4'.
Found 5 results
-
Hi everybody. I hope somebody could help me with this "leaks" report from FastMM4.. I have no idea what BaseThreadInitThunk and similar mean.. --------------------------------2024/6/27 17:52:48-------------------------------- A memory block has been leaked. The size is: 20 This block was allocated by thread 0x38E4, and the stack trace (return addresses) at the time was: C775C2 [System.pas][System][@GetMem$qqri][4962] C7C6F8 [System.pas][System][@StartExe$qqrp23System.PackageInfoTablep17System.TLibModule][24306] 75F2FCC9 [BaseThreadInitThunk] 77AD7CBE [RtlGetAppContainerNamedObjectPath] 77AD7C8E [RtlGetAppContainerNamedObjectPath] The block is currently used for an object of class: IdThreadSafe.TIdThreadSafeInteger The allocation number is: 7395 --------------------------------2024/6/27 17:52:48-------------------------------- A memory block has been leaked. The size is: 36 This block was allocated by thread 0x38E4, and the stack trace (return addresses) at the time was: C775C2 [System.pas][System][@GetMem$qqri][4962] 18F665B C7C6F8 [System.pas][System][@StartExe$qqrp23System.PackageInfoTablep17System.TLibModule][24306] 75F2FCC9 [BaseThreadInitThunk] 77AD7CBE [RtlGetAppContainerNamedObjectPath] 77AD7C8E [RtlGetAppContainerNamedObjectPath] The block is currently used for an object of class: IdGlobal.TIdCriticalSection The allocation number is: 6886. This is my coce; TTCPEchoDaemon = class(TThread) private Sock:TTCPBlockSocket; public Constructor Create; Destructor Destroy; override; procedure Execute; override; end; Constructor TTCPEchoDaemon.Create; begin inherited create(true); if self.Handle = 0 then raise EThread.CreateResFmt(@SThreadCreateError, ['ECHO Daemon '+SysErrorMessage(GetLastError)]); FreeOnTerminate:=true; resume; sock:=TTCPBlockSocket.create; end; procedure TTCPEchoDaemon.Execute; var ClientSock:TSocket; begin with sock do begin CreateSocket; setLinger(true,10000); bind(SERVERIP,portnumber); listen; repeat if terminated or _stopdeamon then break; if canread(1000) then begin // *** there is code here, but for this test it // *** never gets execute b/c nothing is sent. end; until false; end; end; Destructor TTCPEchoDaemon.Destroy; begin Sock.free; inherited destroy; end;
-
I use FastMM4 to check memory leaks and I noticed the report file " MyApplicatoin+MemoryManager_EventLog.txt" is not deleted automatically once I have amended the source and I run my application again. This way if there are still memory leaks they are added to the existing report and this confuses me. Is there an option in FastMM4 to achieve that I am not aware of or do I have to rely on DeleteFile(...) when I run the application ? Many thanks Alberto
-
I have fixed all the leaks related to units I have developed but now I ran into the following: --------------------------------2020/6/21 15:43:36-------------------------------- A memory block has been leaked. The size is: 36 This block was allocated by thread 0x26AC, and the stack trace (return addresses) at the time was: 404DA6 [System.pas][System][@GetMem$qqri][3454] 408BBB [System.pas][System][@NewUnicodeString$qqri][19030] 409E37 [System.pas][System][@UStrSetLength$qqrr20System.UnicodeStringi][24243] 409E8E [System.pas][System][@UStrCat$qqrr20System.UnicodeStringx20System.UnicodeString][24326] C2B610 [IdURI.pas][IdURI][TIdURI.GetPathAndParams$qqrv][672] C60593 [IdHttp.pas][IdHTTP][TIdCustomHTTP.PrepareRequest$qqrp21Idhttp.TIdHTTPRequest][1828] C635FE [IdHttp.pas][IdHTTP][TIdCustomHTTP.DoRequest$qqrx20System.UnicodeString20System.UnicodeStringp22System.Classes.TStreamt3psxi][3156] C1E193 [IdIOHandlerStack.pas][IdIOHandlerStack][TIdIOHandlerStack.Connected$qqrv][244] C5DE5B [IdHttp.pas][IdHTTP][TIdCustomHTTP.Post$qqr20System.UnicodeStringp22System.Classes.TStreamt2][812] C5E6E5 [IdHttp.pas][IdHTTP][TIdCustomHTTP.Post$qqr20System.UnicodeStringp23System.Classes.TStringsp22System.Classes.TStream52System.%DelphiInterface$t24Idglobal.IIdTextEncoding%][1067] C5E804 [IdHttp.pas][IdHTTP][TIdCustomHTTP.Post$qqr20System.UnicodeStringp23System.Classes.TStrings52System.%DelphiInterface$t24Idglobal.IIdTextEncoding%][1084] The block is currently used for an object of class: UnicodeString The allocation number is: 58517 Current memory dump of 256 bytes starting at pointer address 7F35D810: B0 04 02 00 01 00 00 00 0A 00 00 00 2F 00 61 00 70 00 69 00 2F 00 6C 00 6F 00 67 00 69 00 6E 00 00 00 E1 8F B9 72 80 80 00 00 00 00 F1 D8 35 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 E3 00 00 A6 4D 40 00 0F 6E 40 00 55 CC 40 00 7E 74 40 00 8E AA EB 00 CB 5E 73 00 09 9A EC 00 C3 FC ED 00 CB 2B 8D 00 51 64 8F 00 55 18 7B 00 AC 26 00 00 AC 26 00 00 C2 4D 40 00 2D 6E 40 00 C9 74 40 00 94 AB EB 00 BB CC 40 00 C7 CB 40 00 D5 A7 40 00 C5 A6 40 00 E3 6E 40 00 26 6E 40 00 C9 74 40 00 20 00 00 00 90 A8 EB 00 E8 0B 67 89 94 A2 F1 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 17 F4 98 76 80 80 80 80 00 00 00 00 C1 DD 35 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 E3 00 00 A6 4D 40 00 0F 6E 40 00 55 CC 40 00 ° . . . . . . . . . . . / . a . p . i . / . l . o . g . i . n . . . á � ¹ r € € . . . . ñ Ø 5 � . . . . . . . . . . . . . . . . H ã . . ¦ M @ . . n @ . U Ì @ . ~ t @ . Ž ª ë . Ë ^ s . . š ì . Ã ü í . Ë + � . Q d � . U . { . ¬ & . . ¬ & . . Â M @ . - n @ . É t @ . ” « ë . » Ì @ . Ç Ë @ . Õ § @ . Å ¦ @ . ã n @ . & n @ . É t @ . . . . � ¨ ë . è . g ‰ ” ¢ ñ . € € € € € € € € € € € € € € € € € € € € € € € € € € € € . ô ˜ v € € € € . . . . Á Ý 5 � . . . . . . . . . . . . . . . . . ã . . ¦ M @ . . n @ . U Ì @ . I haven't developed or amended any of the units mentioned in the report. I strongly doubt there is a leak in the units mentioned in the report as they are either part of the VCL or part of Indy but at the same time, I don't know where I can find the leak in my code. Can anybody help me? Many thanks Alberto
-
I have started removing memory leaks in my application and installed and configured FastMM4. I ran the application and the following is an excerpt from the memory leaks report. --------------------------------2020/6/20 21:24:00-------------------------------- A memory block has been leaked. The size is: 100 This block was allocated by thread 0x13C4, and the stack trace (return addresses) at the time was: 404DA6 [System.pas][System][@GetMem$qqri][3454] 406E0F [System.pas][System][TObject.NewInstance$qqrv][13000] 40747E [System.pas][System][@ClassCreate$qqrpvzc][14164] 45926E [System.Classes.pas][System.Classes][Classes.TStringList.$bctr$qqrv][6408] EAF697 [uBetFairAPIHorseHelperBL.pas][uBetFairAPIHorseHelperBL][TBetFairAPIHorseHelperBL.ResetEventID$qqrv][921] EAED20 [uBetFairAPIHorseHelperBL.pas][uBetFairAPIHorseHelperBL][TBetFairAPIHorseHelperBL.ListEvents$qqr20System.UnicodeString][611] D4C0EB [DBAccess][TCustomDADataSet.GetRecordCount$qqrv] E92D6A [uTokenBL.pas][uTokenBL][TTokenBL.GetTokenID$qqrv][34] E5A73D [Main.pas][Main][TMainForm.btnFindRacesClick$qqrp14System.TObject][190] E5B5C5 [Main.pas][Main][TMainForm.FormActivate$qqrp14System.TObject][418] 557E7D [Vcl.Forms][Forms.TCustomForm.Activate$qqrv] The block is currently used for an object of class: System.Classes.TStringList The allocation number is: 199660 Current memory dump of 256 bytes starting at pointer address 7F322C00: 2C A7 44 00 00 00 00 00 00 00 00 00 40 B7 A9 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 88 40 34 7F 01 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FC CD 79 80 80 80 80 80 80 80 80 00 00 00 00 01 33 32 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 99 E6 0B 00 A6 4D 40 00 0F 6E 40 00 7E 74 40 00 6E 92 45 00 18 6E 40 00 7E 74 40 00 2D 37 D7 00 CA 53 D7 00 A3 11 DA 00 93 E9 D3 00 A8 4F D4 00 C4 13 00 00 C4 13 00 00 C2 4D 40 00 2D 6E 40 00 C9 74 40 00 23 8B 45 00 73 6E 40 00 8E 37 D7 00 73 6E 40 00 67 54 D7 00 ED 11 DA 00 73 6E 40 00 EB 37 CD 00 5C 00 00 00 2C A7 44 00 26 3A 59 8A 94 A2 F1 00 80 80 80 80 80 80 80 80 80 80 80 80 , § D . . . . . . . . . @ · © � . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˆ @ 4 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÿ ü Í y € € € € € € € € . . . . . 3 2 � . . . . . . . . . . . . . . . . ™ æ . . ¦ M @ . . n @ . ~ t @ . n ’ E . . n @ . ~ t @ . - 7 × . Ê S × . £ . Ú . “ é Ó . ¨ O Ô . Ä . . . Ä . . . Â M @ . - n @ . É t @ . # ‹ E . s n @ . Ž 7 × . s n @ . g T × . í . Ú . s n @ . ë 7 Í . \ . . . , § D . & : Y Š ” ¢ ñ . € € € € € € € € € € € € As this is the first time I use FastMM4 I don't know how to start to fix the leaks. Can somebody point out a tutorial that starts from scratch on this topic? Many thanks Alberto
-
Hello all, I'd like to know if it is possible to activate the FastMM4 Option "AlwaysClearFreedMemory" temporarily/on demand in code? The reason being that some of my routines work with confidential passwords/hashes. Delphi often uses temporary "hidden" strings and interfaces (for example when concatenating strings) so there's the risk of legible stuff remaining in RAM when such a routine exits.
- 5 replies
-
- fastmm4
- alwaysclearfreedmemory
-
(and 3 more)
Tagged with: