Was sind die Ursachen von StartServiceCtrlDispatcher() fehl mit 1063 (ERROR_FAILED_SERVICE_CONTROLLER_CONNECT)?
Ich seltsame Fehler mit meiner Windows-Dienst-Programm. Mein service-Programm nennt StartServiceCtrlDispatcher()
am Anfang seiner main()
, aber irgendwann schlägt mit 1063 (ERROR_FAILED_SERVICE_CONTROLLER_CONNECT)
.
Ich weiß, dass dieser Fehler tritt auf, wenn der Benutzer startet das Programm manuell (als console-Programm). Aber, es ist nicht der Fall. Ich habe eine code zu überprüfen, den übergeordneten Prozess des service-Programm, wenn dieser Fehler Auftritt, und es sagt services.exe ist der übergeordnete Prozess (ich denke, es ist sicher davon ausgehen, dass mein Programm richtig gestartet von SCM).
Leider diesen Fehler nicht reproduzieren, auf meiner dev Maschine und kann nicht Debuggen von mir, aber die Fehler-logs erfasst, die auf Systemen der Benutzer sagt:
- Dieses problem scheint zu passieren, auf nur wenige % aller Nutzer dieses Programms.
- Auch wenn das problem passiert, scheint es nicht zu wiederholen. Nächste mal, wenn der service beginnt in der Regel erfolgreich.
- Wenn dieses problem passiert,
StartServiceCtrlDispatcher()
Stände für etwa eine Sekunde, bevor er zurück mit scheitern.
Hat jemand gesehen ähnlichen Fehler? Wenn ja, was war die Ursache für den Fehler?
Ja, SERVICE_ENTRY_TABLE ist ordnungsgemäß beendet.Und über das timing, den ich vergaß zu erwähnen in meiner ursprünglichen Frage, aber nach StartServiceCtrlDispatcher() Fehler, mein code überprüft Zeitstempel und meist ist es über eine Sekunde (oder weniger) nach der service-Prozess gestartet. Also, ich denke, es ist unwahrscheinlich, dass die Verzögerung, den Fehler verursacht.
Sehr seltsam. Und sehr schwer zu Debuggen, wenn Sie nicht identifizieren können, einen gemeinsamen Faktor, so dass Sie das problem reproduzieren können. Als eine mögliche Lösung, vielleicht könnten Sie versuchen, den Aufruf von StartServiceCtrlDispatcher() ein zweites mal, wenn der erste Aufruf fehlschlägt?
InformationsquelleAutor Susumu Arai | 2015-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie bereits aus dem fehlen von Antworten und alles, was auf google, das problem ist nicht üblich. Ich glaube das problem ist in deinem Dienst, UND es wird im code ausgeführt von der Prozess-start zu
StartServiceCtrlDispatcher()
, UND wahrscheinlich dauert es eine gewisse form der Beschädigung von system-Ressourcen, wahrscheinlich heap oderHANDLE
's.Können Sie mir sehr Leid dies zu hören, aber ich werde Sie nicht haben eine Magische Antwort auf Ihre Probleme. Stattdessen, ich schlage vor, einige der Fehlersuche.
Microsoft Application Verifier ist von unschätzbarem Wert bei der Suche nach Korruption. Ich schlage vor, dass Sie:
Basics\Heaps
für die erste Zeit.Basics\Handles
. Im Gegensatz zuBasics\Heaps
diese können manchmal Feuer "false positive" - Fehler im code, die nicht sehr weh. Eh, da bist du auf der Jagd, die Sie besser beheben Sie alles, was Sie finden können. Meistens bin ich besorgt über Doppel-Befreiung einesHANDLE
oder so ähnlich. Befreiung eines Service managerHANDLE
durch Fehler kann sicherlich führen Sie zu Ihrem problem.Basics\*
, aber ich glaube nicht, dass die helfen werden.main()
undStartServiceCtrlDispatcher()
sowie Globale Konstruktoren, die Sie haben können. Suchen Sie für potenzielle Pufferüberläufe und Fehler mitHANDLE
's.InformationsquelleAutor Codeguard
TIPP: ich habe _wfopen/fwrite/fclose anmelden, einige Nachrichten. Irgendwie 183 geworfen wurde intern und führte zu diesem Fehler 1063. Ich entfernte Anmeldung und es begann normal wie nichts passieren. Jede minute Fehler kann dazu führen, dass es. Starten von Diensten und es wird eine Liste der Lohn-Fehler (183 in meinem Fall).
InformationsquelleAutor hidalgo