Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Applikation hängt beim Beenden. Abschießen unmöglich

  Alt 19. Jan 2009, 19:30
Ahoi

Der Titel sagt schon Alles.
Wir haben hier eine Applikation, die per DLL mit einer Steuerungsschnittstelle kommuniziert. Diese ist ziemlich tief im Windows-System verwoben, was sich durch den Umstand bemerkbar macht, das die Steuerungssoftware selbst dann weiterläuft, wenn Windows mit einem BSOD abschmiert oder sonst irgendwie abgeschmiert ist (was eigentlich nicht vorkommen darf, aber so stehts im Prospekt).

Nun denn, die Schnittstelle ist also eine DLL, die statisch von Delphi geladen wird (durch die 'external' Direktive). Desweiteren laufen diverse Threads in der Anwendung. Anwender berichten nun, das diese Anwendung ab und zu beim Beenden nicht aus dem Speicher verschwindet, sie ist in der Prozessliste noch zu sehen und lässt sich durch den Taskmanager *nicht* abschießen.

Ich dachte zuerst an einen nicht terminierenden Thread, aber dann kann man die App doch abschießen, oder?

Blöderweise funktioniert ein Teil der Applikation immer noch, sodaß die Steuerungssoftware denkt, die App läuft, obwohl sie in Wirklichkeit vollkommen breit im Speicher rumgeistert und keinen Ton von sich gibt.

Meine Frage:
Kann das Hängen und vor allen Dingen das nicht-abschießen-können damit zu tun haben, das die Anwendung gerade in der DLL ist, die widerum in den Tiefen von Windows rumrödelt? Lohnt es sich also, die DLL dynamisch zu laden und bei Programmende kontrolliert zu einem bestimmten Zeitpunkt X selbst freizugeben, um diesen undeterministischen Zustand zu vermeiden? Ich würde den Aufruf der DLL sogar über eine Critical Section kapseln oder irgendwie sicherstellen, das die DLL nur dann entladen wird, wenn gerade kein Zugriff darauf stattfindet.

Bringt das was?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat