Thema: Delphi Jpeg Speicherleck?

Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Jpeg Speicherleck?

  Alt 26. Apr 2011, 15:05
... und der zugrundeliegende Fehler existiert bis heute noch in Delphi XE!
Der "Fehler" ist eigentlich das alle GDI-Ressourcen eine Thread-Affinität anhaftet. Sie dürfen eigentlich nur im erzeugten Thread verwendet werden. Die fehlende VCL-Threadsicherheit ist der GDI-Thread-Affinität geschultet. Ein einelne Anpassung hier löst nicht das grundsätzliche Problem.

Das liegt daran, dass die Methode TJPEGImageFix.Draw nicht Thread-Sicher ist.
Wie vieles ander in der VCL auch nicht. Deshalb: Alles was mit VCL/GUI zu tun hat immer im Hauptthread erledigen oder dafür sorgen das die Ressourcen im entsprechenden Thread erzeugt werden. Wobei hier globale instanzen wie TApplcation/TScreen hier einen trotzdem einen Strich durch die Implementierung machen können.

... der Zähler lief fröhlich hoch, bis der Prozess keinen Speicher mehr hatte...
Du meinst eher: Bis Windows dem Prozess den "GUI-Ressourcen-Hahn zugedeht hat". Den "normaler" Speicher hätte der Prozess wohl noch GB-Weise anfordern könnnen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat