Laden...

CLR20r3 und System.IO.IOException obwohl scheinbar alles IO

Erstellt von Ralf2022 vor einem Jahr Letzter Beitrag vor einem Jahr 723 Views
R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr
CLR20r3 und System.IO.IOException obwohl scheinbar alles IO

Hallo zusammen,

ich habe einen Windows-Dienst programmiert. Dieser macht was er soll.

Jetzt habe ich zufällig entdeckt, dass in der Windows-Ereignisanzeige alle ca. 20sec eine angebliche IOException dieses Dienstes als Information aufläuft. Der Dienst stürzt aber überhaupt nicht ab und läuft mittlerweile seit Monaten ununterbrochen.

Report aus Ereignisanzeige (Auszug):

EventType=CLR20r3
...
Sig[8].Value=System.IO.IOException
...
UI[8]=Service99 wurde beendet und geschlossen.

Diese Informationen laufen unaufhörlich weiter auf, auch bei beendetem Dienst und sogar nachdem ich den Dienst deinstalliert habe. Das verstehe ich überhaupt nicht. Dass der Service immer wieder beendet wurde kann ja nicht sein, denn es wurde kein automatischer Restart eingestellt. Kann mir da jemand helfen? Vielen Dank.

Viele Grüße Ralf

16.842 Beiträge seit 2008
vor einem Jahr

Der Fehler ist ein Sammelfehler. Die wichtigsten Punkte sind:

Sig[0].Name=Problemsignatur 01
Sig[0].Value=Service99.exe
Sig[1].Name=Problemsignatur 02
Sig[1].Value=1.0.0.7
Sig[2].Name=Problemsignatur 03
Sig[2].Value=642c0df6
Sig[3].Name=Problemsignatur 04
Sig[3].Value=System.Core
Sig[4].Name=Problemsignatur 05
Sig[4].Value=4.8.4515.0
Sig[5].Name=Problemsignatur 06
Sig[5].Value=624cf626
Sig[6].Name=Problemsignatur 07
Sig[6].Value=451
Sig[7].Name=Problemsignatur 08
Sig[7].Value=245
Sig[8].Name=Problemsignatur 09
Sig[8].Value=System.IO.IOException

Problemsignatur 01 = Die App, die den Fehler auslöst.
Problemsignatur 09 = Die Exception

Leider hast Du es versäumt die letzten - gefühlt 50 - Jahre die App zu aktualisieren; denn in neueren Runtime-Versionen gibts mehr Infos.
In diesem Fall müsstest Du jetzt mit dem ILViewer durchgehen und schauen, was Methoden am Offset 245 und 415 sind und kannst dann schauen, was fehlt.

Aus Erfahrung ist das entweder ein Folgefehler weil in der Registry (GAC) was kaputt ist, oder es fehlt eine Abhängigkeit, oder eine Abhängigkeit von der Abhängigkeit.... etc

Einfacher kann man das herausfinden, wenn man in der Anwendung AppDomain.UnhandledException abonniert und schaut, was los ist.
Soviel mal zur Erklärung des Eintrags.

Diese Informationen laufen unaufhörlich weiter auf, auch bei beendetem Dienst und sogar nachdem ich den Dienst deinstalliert habe. Das verstehe ich überhaupt nicht.

Macht kein Sinn, daher kann das auch nicht sein. Der EventLog erfindet nichts.
Dann wirst irgendwas übersehen haben.

R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr

Hallo,

danke für den Hinweis. Ich habe das Event abboniert, es wird aber nichts ins Logfile geschrieben, trotz dass im Eventmanager weiter Fehler einlaufen.

 static void Main()
        {
			AppDomain.CurrentDomain.UnhandledException += handleException;
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new Service99()
            };
            ServiceBase.Run(ServicesToRun);
        }



static void handleException(object a_s, UnhandledExceptionEventArgs a_args)
        {
            var _e = (Exception)a_args.ExceptionObject;
            log.logthis("Exception.log", string.Format("e.Type: {0}; e.Message: {1}", _e.GetType().ToString(), _e.Message), 1);
        }
4.942 Beiträge seit 2008
vor einem Jahr

Lösche mal die Datei "C:\proj\Service99\Service99.exe" (bzw. benenne sie um) und schau, ob dann immer noch Einträge in der Windows-Ereignisanzeige erzeugt werden (bzw. ob diese sich dann unterscheiden).

Und ist das denn der Pfad, für den du den Service registriert hast (oder evtl. ein älterer)? Ansonsten schau auch in "Dienste" (Services) nach, ob evtl. noch andere ähnliche Dienste dort registriert sind.

R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr

Habe den Dienst gestoppt und deinstalliert, den kompletten Ordner "C:\proj\Service99\" gelöscht.

Einträge in der Windows-Ereignisanzeige werden trotzdem weiter erzeugt. Immer noch mit Verweis auf die "C:\proj\Service99\Service99.exe".

Ist P2 die Version der exe? Dann wundert mich das, da die aktuelle Programmversion die 1.0.1.0 ist.

Problemsignatur:
P1: Service99.exe
P2: 1.0.0.7

Im Taskmanager finde ich keine weiteren Einträge. Wo kann Windows denn noch etwas versteckt haben?

4.942 Beiträge seit 2008
vor einem Jahr

Und trotz Löschen kommt immer noch die selbe Fehlermeldung?

Und "1.0.0.7" ist die Versionsnummer (aber die sollte gar nicht mehr ermittelbar sein, wenn es die Datei nicht mehr gibt).

Der Dienst scheint ja zeitgesteuert alle 20s zu starten. Hast du mal in der "Aufgabenplanung" nachgeschaut?

R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr

Und trotz Löschen kommt immer noch die selbe Fehlermeldung?

Ja

Und "1.0.0.7" ist die Versionsnummer (aber die sollte gar nicht mehr ermittelbar sein, wenn es die Datei nicht mehr gibt).

Eben

Der Dienst scheint ja zeitgesteuert alle 20s zu starten. Hast du mal in der "Aufgabenplanung" nachgeschaut?

Im Dienst ist kein Timer enthalten und in der Aufgabenplanung ist auch nichts eingetragen.

4.942 Beiträge seit 2008
vor einem Jahr

Dann fällt mir nur noch die Registry ("regedit") ein, in der du mal nach "Service99" suchen könntest.

Als Ergänzung zum TaskManager könntest du den Process Exolorer herunterladen und schauen, ob dort dann (kurzzeitig) "Service99"-Prozesse auftauchen.

R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr

Es sind folgende Einträge in der Registry zu finden:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\Service99
1.jpg

Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Service99

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Service99
2.jpg

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Service99
3.jpg

4.942 Beiträge seit 2008
vor einem Jahr

Wenn du weiterhin den Dienst deinstalliert hast, dann sollte dieser eigentlich nicht mehr in der Registry existieren.

Du kannst ja mal "Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Service99" löschen (evtl. vorher diesen als Backup exportieren).

"CurrentControlSet" ist immer ein Verweis auf das aktuell eingestellte "ControlSet" (bei dir also "ControlSet001") und daher brauchst du daran keine Änderung vornehmen.

Edit: Oder mal testweise den ImagePath dort abändern und schauen, ob sich in dem Log dann auch dieser Pfad ändert (danach kannst du ihn ja immer noch löschen).

R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr

So nochmal der Reihe nach:

-ich habe den Dienst deinstalliert

-in der Registry sind dann keine Einträge mehr vorhanden

-das Programmverzeichnis gelöscht

-Rechner neu gestartet

In der Ereignisanzeige laufen die Informationen munter weiter, aller 20 Sekunden. Allerdings als Version 1007, obwohl die letzte installierte die 1010 ist. Von der 1010 kommen auch im Betrieb keine Meldungen.

Der Dienst ist auf 5 Rechnern in der Produktion parallel installiert (alle haben des gleiche BS-Image). Überall das identische Verhalten.

Installiere ich den Dienst auf meinem Laptop gibt es diese Meldungen nicht. Auch beim Debuggen auf meinem Laptop kommen keinerlei Exceptions. Ich dreh durch ;o(