InstanceManager Referenzzähler > 1

Hallo,

kann mir bitte jemand erklären, was dieser Eintrag im Log bedeutet?

1/7/2013 16:43:52.153 | 13041 | MESSAGE | InstanceManager      | Lösche Instanz [PCSC Generic]
1/7/2013 16:43:52.167 |     0 | WARNING | InstanceManager      | Referenzzähler > 1  (=2) für Instanz #13041 [PCSC Generic] (PCSC_Generic)

Tritt auf, wenn ich mein selbstgeschriebenes Modul lösche.

Danke & LG EmJay

Ich habe das auch bei meinen 2.6er Modulen gelegentlich beobachtet. Bei diesem Fehler bekommst Du IPS i.d.R. nicht mehr ohne Taskmanager gestoppt . Du solltest zunächst Deinen Code nochmal prüfen, ob beim Destroy wirklich alle offenen Resourcen und selbst erstellte Objekte geschlossen und dereferenziert werden.
Was verwendest Du als IDE? Turbo-Delphi oder D2007. Dort gab es auch noch Unterschiede bei der Speicherverwaltung. TurboDelphi benötigt noch FastMM4 als include.

Tommi

Intern werden Referenzen auf deine Instanz gehalten. Wenn dein Modul intern z.B. irgendwo per Self an einen Thread weitergegeben wird, dieser dann aber die Referenz „verschlampt“ und nicht korrekt per NIL freigibt, hast du vor dem Löschen mehr als die eine Referenz, die der IP-Symcon Kernel hälst. Das wird entsprechend bemängelt. Es liegt also irgendwo an deinem Quellcode, dass du eine Referenz der Instanziierung deiner Klasse hälst, die nicht korrekt freigegeben wird.

paresy

Ich habe das Problem meistens im Zusammenhang mit Timer-Routinen gesehen. Wobei ich natürlich nicht sehen oder gar beeinflussen kann, was der Timer mit meinen Instancen macht. Am Ende stand dann meistens nur „Warte auf Beendigung des Timer-Threads…“ im Log.

Tommi

Hallo,

Danke für eure Hilfe!

@paresy Mitten ins Schwarze. Self an Thread übergeben.

Eigentlich dachte ich, es wird im Modul-Destructor alles sauber zerstört und weggeräumt. Problem ist nun aber, dass der Destructor erst gar nicht aufgerufen wird, wenn diese Refernzzähler-Warnung auftritt (wenn ich Self nicht an den Thread übergebe kommt die Warnung nicht und der Destructor wird aufgerufen). Muss ich die Referenz schon vor dem Destructor aufräumen? Wie?

Schöne Grüße, EmJay