Einzelnen Beitrag anzeigen

BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#1

TTask.Run(...) in DLLs

  Alt 8. Mär 2023, 15:52
Mir ist gerade aufgefallen, dass die Verwendung von TTask.Run ein Problem mit der Speicherfreigabe hat, wenn man das in einer DLL verwendet.

Zitat:
An unexpected memory leak has occurred. The unexpected small block leaks are:

1 - 12 bytes: TObject x 4
21 - 28 bytes: TLightweightEvent x 2
29 - 36 bytes: TWorkStealingQueue<System.Threading.TThreadPool.IT hreadPoolWorkItem> x 2
45 - 52 bytes: TThreadPool.TThreadPoolMonitor x 1
61 - 68 bytes: TThreadPool.TQueueWorkerThread x 2, Unknown x 4
69 - 76 bytes: UnicodeString x 1
133 - 140 bytes: Unknown x 2
173 - 188 bytes: UnicodeString x 1
In der System.Threading wird für den Fall, das es eine DLL ist, die DLLShutdownProc aus der Unit System entsprechend angepasst.
Beim Entladen der Dll sollte dann DLLShutdown aufgerufen werden.

Aber DLLShutdown wird anscheinend gar nicht aufgerufen.
In der Unit hat diese Teil keine blauen Pünktchen.

Kann es sein, dass das vergessen wurde?
Mit XE7 gibt es übrigens kein Speicherproblem.
Bernd
  Mit Zitat antworten Zitat