Sharepoint und Visual Studio – OWSTIMER.EXE

Sharepoint ab Version 2010 verfügt über eine neue Funktion, die den OWSTIMER.EXE Prozess jede Nacht recycelt – ähnlich wie die der Anwendungspool-Funktionalität des IIS – dies um Speicherprobleme des Timer-Dienst zu vermeiden.

Das Recycling wird durch ein neuen Zeitgeberauftrag der in Sharepoint 2010/2013 hinzugefügt wurde kontrolliert: der Job „Timer Service Recycle“ läuft Standardmässig einmal pro Tag um 6 Uhr morgens durch.

Während der Durchführung des Recycling Prozesses und das Herunterfahren des Timer-Dienstes kommt es zu einem Problem durch .NET.

Das Problem hierbei ist, der Key zur Verschlüsselung hat in einem Thread die Identität dessen Benutzerkonto angenommen, von diesem der Key erstellt wurde. Wenn nun der .NET Finalizer verarbeitet wird, kommt es dazu das der Key zur Verschlüsselung während des heruntergefahrenen Timer-Dienst, bei dem nächsten Thread dieser nicht imitiert ausgeführt wird – so dass der Schlüssel nicht vorhanden ist und es zur Ausnahme “keyset does not exist“ kommt.

Da diese Ausnahme in der letzten Phase der Abschaltung des Prozesses kommt, wird kein weiterer Schaden verursacht, der entsprechende Fehler wird im Ereignisprotokoll vermerkt:

An unhandled exception occurred and the process was terminated.
Process ID: 4213
Exception: System.Security.Cryptography.CryptographicException
Message: Keyset does not exist

Sichtbar wird das Problem auch auf der Konsole wenn Visual Studio oder ein weiterer JIT-Debugger auf dem betroffenen System installiert ist. In diesem Fall wird folgender Dialog auf der Server Konsole erscheinen:

Visual Studio Just-in-Time Debugger
Visual Studio Just-in-Time Debugger

Deinstallieren von Visual Studio wird dieses Problem nicht beheben, da die Registrierungseinstellungen noch präsent und aktiv ist.

Just-In-Time-Debugger exception
Just-In-Time-Debugger exception

Um den Server so zu konfigurieren dass das Dialogfeld zur unbehandelten Ausnahme nicht mehr auftritt, kann der Registrierungseditor aufgerufen werden um folgende Registrierungsschlüssel zu löschen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

Bei einem 64-bit Betriebssystem sind folgende Registry Keys zu entfernen:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
Regedit vsjitdebugger entfernen
Regedit vsjitdebugger entfernen

Die REG_SZ Zeichenfolge Debugger löschen, dabei ist acht zu geben das keine weiteren Schlüssel entfernt werden!

Der Reportgenerator awk

Der Reportgenerator awk

Entwickler unter Unix/Linux stehen ein breites Spektrum an Interpretern, programmierbaren Filtern und Tools zur verfügen, eines ist zum Beispiel der mächtige awk-Reportgenerator.

Der Name awk kam durch eine nicht leicht ergründbare Abkürzung zustande. Die drei Buchstaben „awk“ stehen für die Anfangsbuchstaben der Nachnamen der drei Entwickler: Aho, Weinberger und Kernigham, letzter sich schon länger mit der Programmierung in C beschäftigte.

awk ist eine Datei-Verarbeitungssprache, die sich gut zur Datenmanipulation und Wiedergewinnung von Informationen aus Textdaten eignet. Diese AWK-Referenzseite bietet eine vollständige technische Beschreibung des awk-Reportgenerator. Wer mit der Sprache nicht vertraut ist, findet hier ein hilfreiches AWK-Tutorial.