Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: ,net Framework entladen nach Beendigung COM

  Alt 26. Jun 2017, 14:22
Wir haben auch noch ein Verhalten in den TOleServer festgestellt, das die Situation verschärft. Die TLB verwendet für manche Klassen OLEServer Ableitungen. Diese benötigen wir, um Events einzuhängen. Wenn ich nun die Klassen freigebe, wird der Refcount der eingebetteten FEventDispatch Instanz nicht mehr 0 und es bleiben Speicherlecks übrig.

Das ganze passiert, da im Queryinterface einmal das Interface mit IsEqualIID mit der IID des Interfaces eingehängt wird (ist ja auch korrekt), aber dann die Methode nochmal aufgerufen wird, bei der zwar in der GUID der gleiche D1 Wert, aber D2-D3 = 0 sind. Dadurch wird ein zusätzliches Interface eingehängt (RefCount = 2) aber beim Beenden wird nur einmal das Release aufgerufen.
In "älteren" Delphi-Versionen (vor Delphi 10) gabs noch einen Bitterbösen Fehler in der Standardimplementierung der überall beim "DefaultInterface" aufgeschlagen ist und die Referenzzählung kaputt gemacht hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat