AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Fehlermeldung beim Runterfahren mit Systemdienst
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung beim Runterfahren mit Systemdienst

Ein Thema von Mavarik · begonnen am 11. Dez 2009 · letzter Beitrag vom 16. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#1

Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 11. Dez 2009, 08:37
Hallo Zusammen...

Die Problemer werden weniger aber es gibt immer noch welche...

"DLL-Initialisierung fehlgeschlagen..."
"Die Anwendung konnte nicht initialisiert werden, da die Arbeitsstation gerade heruntergefahren wird."

Diese Meldung erhalte ich beim runterfahren von W2k & XP - Vista bleibt ohne Meldung.

Ich gehe davon aus, das mein Systemdienst nicht "richtig" auf das herunterfahren reagiert.

Hat jemand ne Idee?

Grüsse Mavarik
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 11. Dez 2009, 08:53
Hallo,

das klingt so, als wolle da ein Porgramm, Dienst.. starten, während das System heruntergefahren wird.
Bei Diensten fällt mir als Ursache da momentan nur folgendes ein:

Der Dienst ist so konfiguriert, das er, sofern er (unbeabsichtigt?) beendet wird, automatisch neu gestartet wird.
Ist in der Dienstekonfiguration auf dem Reiter "Wiederherstellen" eventuell irgendwas konfiguriert, was beim Dienstausfall zu geschehen hat?

Oder ist der Dienst so geschrieben, dass er sich im Fehlerfalle eventuell neu startet?

Gibt es eine Diensteüberwachung, die ausgefallenen Dienste neu startet und (dummerweise) auch beim Herunterfahren noch den Neustart bereits beendeter Dienste "anregt"?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 11. Dez 2009, 09:15
Zitat von nahpets:
das klingt so, als wolle da ein Porgramm, Dienst.. starten, während das System heruntergefahren wird.
Nein eigentlich macht der Dienst gerade nix, bzw. wartet auf eine SetEvent

Zitat von nahpets:
Der Dienst ist so konfiguriert, das er, sofern er (unbeabsichtigt?) beendet wird, automatisch neu gestartet wird.Ist in der Dienstekonfiguration auf dem Reiter "Wiederherstellen" eventuell irgendwas konfiguriert, was beim Dienstausfall zu geschehen hat?
Eigentlich auch nicht der dienst wird erzeugt mit:

Service := CreateService(SCManager, ServiceName, DisplayName, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, pchar(FileName), nil, nil, nil, nil, nil);
Zitat von nahpets:
Oder ist der Dienst so geschrieben, dass er sich im Fehlerfalle eventuell neu startet?
Nicht das ich wüsste...

Gibt es nicht auch sowas für dies für Dienste?

procedure WMQUERYENDSESSION(var msg: TMessage); message WM_QUERYENDSESSION; oder erhalten die "nur" einen Stopevent...

Kann es sein, dass ich einfach nicht schnell genug alle erzeugten Threads beende?

Mavarik
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 11. Dez 2009, 09:30
Zitat von Mavarik:
Zitat von nahpets:
das klingt so, als wolle da ein Porgramm, Dienst.. starten, während das System heruntergefahren wird.
Nein eigentlich macht der Dienst gerade nix, bzw. wartet auf eine SetEvent
Die mag durchaus richtig sein, aber: Wenn der Dienst bereist auf da Beendensignal reagiert hat und beendet wurde und nun (warum auch immer) beim Herunterfahren neu startet, kann das von Dir beschriebene Problem auftreten. Das heißt: Fehlerursache muss nicht in Deinem Dienst liegen.

Zitat von Mavarik:
Zitat von nahpets:
Der Dienst ist so konfiguriert, das er, sofern er (unbeabsichtigt?) beendet wird, automatisch neu gestartet wird.Ist in der Dienstekonfiguration auf dem Reiter "Wiederherstellen" eventuell irgendwas konfiguriert, was beim Dienstausfall zu geschehen hat?
Eigentlich auch nicht der dienst wird erzeugt mit:

Service := CreateService(SCManager, ServiceName, DisplayName, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, pchar(FileName), nil, nil, nil, nil, nil);
Siehe oben: Wenn das beim Herunterfahren aufgerufen wird, kann der beschriebene Fehler auftreten. Das Betriebssystem ist also quasi schon halb weg, aber der Dienst wurde veranlasst, zu starten.

Zitat von Mavarik:
Zitat von nahpets:
Oder ist der Dienst so geschrieben, dass er sich im Fehlerfalle eventuell neu startet?
Nicht das ich wüsste...

Gibt es nicht auch sowas für dies für Dienste?

procedure WMQUERYENDSESSION(var msg: TMessage); message WM_QUERYENDSESSION;
Weiß ich nicht.

Zitat von Mavarik:
oder erhalten die "nur" einen Stopevent...

Kann es sein, dass ich einfach nicht schnell genug alle erzeugten Threads beende?

Mavarik
Ja, oder eventuell sogar noch neue erzeugt werden. Ich weiß leider nicht, ob man die Wartezeit des Betriebssystems bis zum Beenden von Diensten irgendwie konfigurieren kann. Dies könnte zumindest bei der Fehlersuche hilfreich sein, frei nach dem Motto: Wartezeit ist länger, Problem ist weg. Dann: Der Dienst beendet sich nicht schnell genug. Damit hast Du dann einen Ansatzpunkt für die Fehlersuche /-behebung.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#5

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 11. Dez 2009, 22:42
Hallo Mavarik.
  • Mavarik hat geschrieben:
Zitat:
oder erhalten die "nur" einen Stopevent...
Ja die Dienste erhalten über den ServiceHandler ein SERVICE_CONTROL_SHUTDOWN.
  • Mavarik hat geschrieben:
Zitat:
Kann es sein, dass ich einfach nicht schnell genug alle erzeugten Threads beende?
Ja, wenn PServiceStatus^.dwWaitHint kleiner als die Zeit, die für das Beenden aller Threadss benötigt wird, ist.

Also wie ich das verstanden habe ist dein Dienst wie folgt aufgebaut:

DispatchTable initialisieren -> @serviceproc -> ServiceName
StartServiceCtrlDispatcher -> @serviceproc
RegisterServiceCtrlhandler -> SetServiceStatus
ServiceMain -> WorkerCode + WorkerThreads -> WairFor -> Event -> ServiceHandler

Nach Signalling des Synchronisationsobjects(Event) wird in der ServiceMain aufgeräumt,
danach die Prozedure verlassen und somit sollte der Service beendet sein, und das System kann
herunterfahren.

Delphi-Quellcode:
procedure ServiceHandler(fdwcontrol: integer); stdcall;
begin
  case fdwcontrol of
    SERVICE_CONTROL_STOP:
    SERVICE_CONTROL_PAUSE:
    SERVICE_CONTROL_CONTINUE:
    SERVICE_CONTROL_INTERROGATE:
    SERVICE_CONTROL_SHUTDOWN:
      begin
        if hStoppedEvent > 0 then SetEvent(hStoppedEvent);
      end;
  end;
end;

Versuch mal folgendes, um herauszufinden wo es genau hakt.

1. Testweise, ohne SERVICE_INTERACTIVE_PROCESS -> Reboot
2. Ohne das Aufräumen der Threads, bzw. gleich ohne diese überhaupt zu starten. -> Reboot


lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 12. Dez 2009, 10:31
Zitat von Mavarik:
Systemdienst
Was ist ein Systemdienst?
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#7

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 12. Dez 2009, 10:43
Die lange Schreibweise für "Dienst".
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 14. Dez 2009, 11:11
Zitat von Astat:
Ja die Dienste erhalten über den ServiceHandler ein SERVICE_CONTROL_SHUTDOWN.
Interessanter weise sendet XP "nur" ein SERVICE_CONTROL_STOP

Mavarik
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#9

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 14. Dez 2009, 22:45
Hallo Mavarik.

Nö, wenn Service Control Handler Function korrekt implemenetiert, wird ein Shutdown ausgeführt.

Siehe: http://msdn.microsoft.com/en-us/library/ms685149(VS.85).aspx

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Fehlermeldung beim Runterfahren mit Systemdienst

  Alt 15. Dez 2009, 21:06
Zitat von Astat:
Nö, wenn Service Control Handler Function korrekt implemenetiert, wird ein Shutdown ausgeführt.
Wenn mein Dienst korrekt implementiert wäre, würde ich nicht hier Schreiben und eine Fehlermeldung erhalten...

Aber ich bin ja schon weiter...

Also...

Status.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE or SERVICE_ACCEPT_SHUTDOWN;

das fehlte schon mal...

Und obwohl ich
Delphi-Quellcode:
    SERVICE_CONTROL_SHUTDOWN:
       begin
         Stopped := True;
         StopEvent.SetEvent;
         Status.dwCurrentState := SERVICE_STOP_PENDING;
         Status.dwWaitHint := 3000;
         Status.dwWin32ExitCode := NO_ERROR;
         SetServiceStatus(StatusHandle, Status);
       end
setze und (mein Dienst sich innerhalb von 430ms inkl. Logdateischreiben, sich beendet)

erhalte ich trotzdem die "Fehlermeldung" noch jemand ne Idee?

Grüsse Mavarik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz