Re: AnyDAC 1.4.2 - freeware Oracle, MySQL, MSSQL, MSAccess, Sybase ASA, ADS data access framework



Hello !

Indy not cleaning up the TCriticalSection
it creates in the Initialization section of IdComponent.pas

That is "controllable" leak. Indy source code has appropriate
comment about that. So, dont warry about that.

The reason I think it is due to this is because when I do
these simple steps in IDE, I get an error:

You can try following:
- open daAD.inc
- find {.$define AnyDAC_DEBUG} and define AnyDAC_DEBUG
- open daADDxx.bdsgroup
- recompile all packages
If error is gone, then it was due to (either either) conflict of
FastMM with Fastcode project code, I am using in AnyDAC.
BTW, I am using probably outdated Fastcode code.

If all you're doing is some basic TCP/IP communication,
could you not consider something other than Indy --such
as ICS, Synapse etc., please.

AnyDAC uses Indy as the transport for monitoring facility.
(BTW, that allows to run application on one PC and monitor
on another). The most annoying problem with Indy is changes
in packet names.

Regards,
Dmitry

--
Dmitry Arefiev - www.da-soft.com
AnyDAC - Oracle, MySQL, MSSQL, MSAccess, IBM DB2, Sybase
ASA, DbExpress, ODBC freeware data access framework
gs-soft AG - www.gs-soft.com
SAPx - Delphi to SAP R/3 direct access
Saphir - SAP R/3 metadata at your fingertips
MetaBase - ERWIN model in Delphi applications

Adem wrote:
I can confirm this.

Well, I looked into it a little further, and I think it's
due to that !@#$%^ Indy not cleaning up the TCriticalSection
it creates in the Initialization section of IdComponent.pas

The reason I think it is due to this is because when I do
these simple steps in IDE, I get an error:

-- Load ADAdministrator.dpr in the Tools folder
-- Compile it with FastMM4 FullDebugMode and EnableMemoryLeakReporting
enabled
-- Run ADAdministrator.exe in IDE
-- Do nothing, but simply exit ADAdministrator

you get this report (below).

Dimitry,

If all you're doing is some basic TCP/IP communication,
could you not consider something other than Indy --such
as ICS, Synapse etc., please.

Cheers,
Adem
--------------------------------------
FastMM4 Report:
--------------------------------------
A memory block has been leaked. The size is: 28

Stack trace of when this block was allocated (return addresses):
402A97 [system.pas][System][@GetMem][2447]
403847 [system.pas][System][TObject.NewInstance][8368]
403C0E [system.pas][System][@ClassCreate][9027]
44816A [SyncObjs.pas][SyncObjs][TCriticalSection.Create][194]
4043F7 [system.pas][System][@InitResStringImports][11129]
50C51F [IdComponent.pas][IdComponent][initialization][185]
404350 [system.pas][System][InitUnits][10853]
4043B7 [system.pas][System][@StartExe][10918]
406C2F [SysInit.pas][SysInit][@InitExe][668]

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

The allocation number is: 540

Current memory dump of 256 bytes starting at pointer address 1D9C3C8:
04 80 44 00 68 A3 14 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 C6 1D CF FB
00 00 00 00 81 C4 D9 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3A
02 00 00 97 2A 40 00
47 38 40 00 0E 3C 40 00 F3 7B 4E 00 50 38 40 00 0E 3C 40 00 6F 7C 4E 00 F7
87 53 00 89 88 53 00
B7 2A 40 00 65 38 40 00 59 3C 40 00 B0 B1 42 00 AB 38 40 00 BC 6C 41 00 AB
7C 4E 00 AB 38 40 00
BC 6C 41 00 1C 00 00 00 88 6C 4E 00 98 67 02 07 80 6C 61 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 67 98 FD F8 00 00 00 00 11 C5 D9 01 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 42 02 00 00 97 2A 40 00 47 38 40 00 0E 3C 40 00 4E
27 4E 00 6B 64 40 00
40 16 5A 00 50 43 40 00 B7 43 40 00 2F 6C 40 00 B7 2A 40 00 65 38 40 00 59
3C 40 00 9E 38 40 00
. ? D . h £ . . ÿ ÿ ÿ ÿ . . . . . . . . . . . . .
. . . Æ . Ï û
. . . . ? Ä Ù . . . . . . . . . . . . . . . . . :
. . . - * @ .
G 8 @ . . < @ . ó { N . P 8 @ . . < @ . o | N . ÷
? S . ? ^ S .
· * @ . e 8 @ . Y < @ . ° ± B . « 8 @ . ¼ l A . «
N . « 8 @ .
¼ l A . . . . . ^ l N . ~ g . . ? l a . ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? g ~ i ø . . . . . Å Ù . .
. . . . . . .
. . . . . . . . B . . . - * @ . G 8 @ . . < @ . N
' N . k d @ .
@ . Z . P C @ . · C @ . / l @ . · * @ . e 8 @ . Y
< @ . ? 8 @ .

--------------------------------
This application has leaked memory. The small block leaks are (excluding
expected leaks registered by pointer):

21 - 28 bytes: TCriticalSection x 1

.



Relevant Pages

  • Re: Memory Leaks
    ... >> few memory leaks that I dont think I have control over. ... > Otherwise, as Nicholas said, Indy does have known and "valid" leaks. ... and only get leaked as the app shuts down. ...
    (borland.public.delphi.language.basm)
  • Re: Memory Leaks
    ... >>> few memory leaks that I dont think I have control over. ... >> I also use Indy and to ignore its leaks, I had to add those two lines ... and only get leaked as the app shuts down. ...
    (borland.public.delphi.language.basm)
  • Re: AnyDAC 1.4.2 - freeware Oracle, MySQL, MSSQL, MSAccess, Sybase ASA, ADS data access framewor
    ... could you not consider something other than Indy --such ... A memory block has been leaked. ... The block is currently used for an object of class: TCriticalSection ... The small block leaks are (excluding expected leaks registered by pointer): ...
    (borland.public.delphi.thirdpartytools.general)
  • Re: Odd problem
    ... This sounds like an initialization problem in the component. ... initializes something and forgets to finalize it, so on next launch it tries ... and Im not really sure its an Indy issue this one. ...
    (borland.public.delphi.thirdpartytools.general)
  • Re: Help with a memory leak
    ... However, each time my thread exits, I ... > was expecting some memory used when the thread was created, ... should I set freeonterminate to TRUE? ... Indy itentionally does not free some object when you exit application. ...
    (comp.lang.pascal.delphi.misc)