title: Delphi: uses IdGlobalProtocols cause memory leak
body: <p>if i add <code>IdGlobalProtocols</code> unit by indy into my project, fastmm log a memory leak caused by <code>TIdCriticalSection</code>. If i remove <code>IdGlobalProtocols</code> from my uses list the leak desappear. </p>
  
  <p>this happen even if i only start and close an empty form, eg.</p>
  
  <p><strong>Project3.dpr</strong></p>
  
  <pre><code>program Project3;
  
  uses
    sharemem,
    Vcl.Forms,
    Unit2 in 'Unit2.pas' {Form2};
  
  {$R *.res}
  
  begin
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TForm2, Form2);
    Application.Run;
  end.
  </code></pre>
  
  <p><strong>Unit2.pas</strong></p>
  
  <pre><code>unit Unit2;
  
  interface
  
  uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
    IdGlobalProtocols;
  
  type
    TForm2 = class(TForm)
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    Form2: TForm2;
  
  implementation
  
  {$R *.dfm}
  
  end.
  </code></pre>
  
  <p><strong>Project3_FastMM_Log.txt</strong></p>
  
  <pre><code>--------------------------------2017/4/21 17:44:57--------------------------------
  Leak di un blocco. La dimensione è: 36
  
  Questo blocco è stato allocato dal thread 0x14F8, e lo stack trace (indirizzo restituito) in quel momento era:
  406E62 [System.pas][System][@GetMem$qqri][4614]
  407CA3 [System.pas][System][TObject.NewInstance$qqrv][16452]
  4084CA [System.pas][System][@ClassCreate$qqrpvzc][17790]
  505D06 [System.SyncObjs.pas][System.SyncObjs][Syncobjs.TCriticalSection.$bctr$qqrv][1032]
  4149A2 [Winapi.Windows.pas][Winapi.Windows][Windows.GetProcAddress$qqsuipb][35524]
  5E8897 
  40964C [System.pas][System][InitUnits$qqrv][22339]
  4096B8 [System.pas][System][@StartExe$qqrp23System.PackageInfoTablep17System.TLibModule][22411]
  410517 [SysInit.pas][SysInit][@InitExe$qqrpv][1419]
  5E898C 
  74D6337A [BaseThreadInitThunk]
  773A9882 [Unknown function at RtlInitializeExceptionChain]
  773A9855 [Unknown function at RtlInitializeExceptionChain]
  
  Il blocco è attualmente usato da una istanza della classe: TIdCriticalSection
  
  Il numero di allocazione è: 378
  
  Dump della memoria di 256 byte partendo dall'indirizzo del puntatore 7EF9EB60:
  2C A4 5C 00 F8 13 2A 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  AA A4 57 B5 80 80 80 80 00 00 00 00 91 FD F9 7E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  7D 01 00 00 62 6E 40 00 6F 9B 40 00 FC 9F 40 00 02 89 5E 00 4C 96 40 00 B8 96 40 00 17 05 41 00
  8C 89 5E 00 7A 33 D6 74 82 98 3A 77 55 98 3A 77 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 00 F8 14 00 00 F8 14 00 00
  7E 6E 40 00 29 9C 40 00 99 AF 40 00 23 C0 40 00 B9 EC 5D 00 E1 EC 5D 00 E0 95 40 00 CF 89 5E 00
  7A 33 D6 74 82 98 3A 77 55 98 3A 77 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 00 18 00 00 00 B0 04 02 00 89 46 31 4A
  ,  ¤  \  .  ø  .  *  .  ÿ  ÿ  ÿ  ÿ  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  ª  ¤  W  µ  €  €  €  €  .  .  .  .  ‘  ý  ù  ~  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  }  .  .  .  b  n  @  .  o  ›  @  .  ü  Ÿ  @  .  .  ‰  ^  .  L  –  @  .  ¸  –  @  .  .  .  A  .
  Œ  ‰  ^  .  z  3  Ö  t  ‚  ˜  :  w  U  ˜  :  w  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  ø  .  .  .  ø  .  .  .
  ~  n  @  .  )  œ  @  .  ™  ¯  @  .  #  À  @  .  ¹  ì  ]  .  á  ì  ]  .  à  •  @  .  Ï  ‰  ^  .
  z  3  Ö  t  ‚  ˜  :  w  U  ˜  :  w  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  °  .  .  .  ‰  F  1  J
  </code></pre>
  
  <p>What i doing wrong?</p>
  
  <p>I'm on Delphi Berlin Update 2</p>