Windows Druckwarteschlange stürzt ab: The Print Spooler service terminated unexpectedly

Heute kam es mal wieder zu einem Problem, das man einfach nicht erleben möchte. Ein Benutzer ruft an, weil angeblich ein Netzwerkdrucker nicht mehr funktioniert. Ein Kollege nimmt sich dessen an, prüft die Angelegenheit und führt einen Neustart des Windows Spoolers durch – ohne Erfolg.

Nächster Schritt des Kollegen: Neustart des Servers, mit dem Ergebnis, dass der Spooler danach überhaupt nicht mehr lief und alle paar Sekunden mit folgender Meldung abstürzte:

Event Type:	Error
Event Source:	Service Control Manager
Event Category:	None
Event ID:	7031
Date:		25.04.2012
Time:		14:17:13
User:		N/A
Computer:	HOSTNAME
Description:
The Print Spooler service terminated unexpectedly.  It has done this
1 time(s). The following corrective action will be taken in 60000
milliseconds: Restart the service.

Zeitgleich wurden auf der Konsole jedes Mal folgende Fehlermeldungen ausgegeben:


Stillstand von 50 Netzwerkdruckern. Was tun? Das Löschen vorhandener Druckaufträge aus C:\Windows\System32\spool\printers\ brachte genausowenig Besserung wie das Entfernen der Drucker aus dem Schlüssel HKLM\SYSTEM\CurrentControlSet\Print\Printers in der Registry. Die Deaktivierung von DEP änderte ebenfalls nichts.

Eine vollständige Wiederherstellung der virtuellen Maschine vom Vortag und das Booten ohne Netzwerk brachten keinerlei Besserung. Selbst bei einer zwei Wochen alten Sicherung wollte der Spooler einfach nicht mehr funktionieren.

Bei einer erneuten Recherche stieß ich dann auf einen Artikel, der das Debugging des Spool Dienstes mittels des Scripts ADPlus.vbs aus den Windows Debugging Tools beschreibt. Passend dazu gibt es einen KB-Artikel von Microsoft, der die Verwendung von ADPlus.vbs dokumentiert.

In meinem Fall (Windows Server 2003) musste ich dabei wie folgt vorgehen:

Anschließend konnte ich das im Ordner C:\Program Files\Debugging Tools for Windows (x86) befindliche Script „adplus_old.vbs“ ausführen:

C:\Program Files\Debugging Tools for Windows (x86)>cscript adplus_old.vbs -crash -p 5036 -o c:\log
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Attaching the debugger to: SPOOLSV.EXE
                               (Process ID: 5036)

Stürzt der Prozess ab, wird im angegebenen Zielverzeichnis (hier: c:\log) eine entsprechende Logdatei erstellt:

Eine Überprüfung der Datei (einfach nach „ERROR“ oder „WARNING“ suchen), förderte schließlich folgenden Eintrag zu Tage:

Faulting stack below ---
*** WARNING: Unable to verify checksum for C:\WINDOWS\system32\HpTcpMon.dll
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\HpTcpMon.dll - 
 # ChildEBP RetAddr  Args to Child              
WARNING: Stack unwind information not available. Following frames may be wrong.
00 00aee774 00000000 00000000 00000000 00000000 HpTcpMon+0x5d71

Eine verdächtige Datei also, vermutlich von Hewlett Packard. Eine Suche nach „HpTcpMon.dll“ und „Spool“ brachte dann gleich mehrere brauchbare Hinweise ans Licht, unter anderem den Artikel Spooler Subsystem App closed by Data Execution Prevention, der eine weitere Vorgehensweise beschreibt, um dem Problem auf die Schliche zu kommen:

    1. Spooler starten und PID im Task Manager heraussuchen
    2. Folgendes Kommando ausführen: ntsd -p PID -g -G

Bricht der Prozess ab, wird von ntsd ebenfalls ein Hinweis auf die „HpTcpMon.dll“ ausgegeben (weiter nach unten scrollen):

Microsoft (R) Windows Debugger  Version 5.2.3790.3959
Copyright (c) Microsoft Corporation. All rights reserved.

*** wait with pending attach
The call to LoadLibrary(ext) failed, Win32 error 2
    "The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(exts) failed, Win32 error 2
    "The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(uext) failed, Win32 error 2
    "The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(ntsdexts) failed, Win32 error 2
    "The system cannot find the file specified."
Please check your debugger configuration and/or network access.
Symbol search path is: *** Invalid *** : Verify _NT_SYMBOL_PATH setting
Executable search path is:
ModLoad: 01000000 01010000   C:\WINDOWS\system32\spoolsv.exe
ModLoad: 7c800000 7c8c0000   C:\WINDOWS\system32\ntdll.dll
ModLoad: 77e40000 77f42000   C:\WINDOWS\system32\kernel32.dll
ModLoad: 77ba0000 77bfa000   C:\WINDOWS\system32\msvcrt.dll
ModLoad: 77f50000 77feb000   C:\WINDOWS\system32\ADVAPI32.dll
ModLoad: 77c50000 77cef000   C:\WINDOWS\system32\RPCRT4.dll
ModLoad: 76f50000 76f63000   C:\WINDOWS\system32\Secur32.dll
ModLoad: 77c00000 77c48000   C:\WINDOWS\system32\GDI32.dll
ModLoad: 77380000 77411000   C:\WINDOWS\system32\USER32.dll
ModLoad: 76290000 762ad000   C:\WINDOWS\system32\IMM32.DLL
ModLoad: 74060000 74078000   C:\WINDOWS\system32\SPOOLSS.DLL
ModLoad: 71c00000 71c17000   C:\WINDOWS\system32\WS2_32.dll
ModLoad: 71bf0000 71bf8000   C:\WINDOWS\system32\WS2HELP.dll
ModLoad: 71c40000 71c97000   C:\WINDOWS\system32\NETAPI32.dll
ModLoad: 76cf0000 76d0a000   C:\WINDOWS\system32\iphlpapi.dll
ModLoad: 76b70000 76b7b000   C:\WINDOWS\system32\PSAPI.DLL
ModLoad: 71b20000 71b61000   C:\WINDOWS\System32\mswsock.dll
ModLoad: 76ed0000 76efa000   C:\WINDOWS\system32\DNSAPI.dll
ModLoad: 76f70000 76f77000   C:\WINDOWS\System32\winrnr.dll
ModLoad: 76f10000 76f3e000   C:\WINDOWS\system32\WLDAP32.dll
ModLoad: 76f80000 76f85000   C:\WINDOWS\system32\rasadhlp.dll
ModLoad: 76130000 76186000   C:\WINDOWS\system32\localspl.dll
ModLoad: 77670000 777a9000   C:\WINDOWS\system32\ole32.dll
ModLoad: 77d00000 77d8b000   C:\WINDOWS\system32\OLEAUT32.dll
ModLoad: 77b90000 77b98000   C:\WINDOWS\system32\VERSION.dll
ModLoad: 76be0000 76c0b000   C:\WINDOWS\system32\sfc_os.dll
ModLoad: 76bb0000 76bdb000   C:\WINDOWS\system32\WINTRUST.dll
ModLoad: 761b0000 76243000   C:\WINDOWS\system32\CRYPT32.dll
ModLoad: 76190000 761a2000   C:\WINDOWS\system32\MSASN1.dll
ModLoad: 76c10000 76c38000   C:\WINDOWS\system32\imagehlp.dll
ModLoad: 76920000 769e2000   C:\WINDOWS\system32\USERENV.dll
ModLoad: 73070000 73097000   C:\WINDOWS\system32\winspool.drv
ModLoad: 74020000 7402e000   C:\WINDOWS\system32\cnbjmon.dll
ModLoad: 10000000 10015000   C:\WINDOWS\system32\AUCPLMNT.DLL
ModLoad: 00d20000 00d32000   C:\WINDOWS\system32\CNAS0MMK.DLL
ModLoad: 75e60000 75e87000   C:\WINDOWS\system32\apphelp.dll
ModLoad: 4dc30000 4dc5e000   C:\WINDOWS\system32\msctfime.ime
ModLoad: 00820000 0083a000   C:\WINDOWS\system32\ZLHP2600.DLL
ModLoad: 00da0000 00dab000   C:\WINDOWS\system32\HPBMMON.DLL
ModLoad: 00ec0000 00ed4000   C:\WINDOWS\system32\hpdomon.dll
ModLoad: 74000000 74007000   C:\WINDOWS\system32\pjlmon.dll
ModLoad: 72450000 72458000   C:\WINDOWS\system32\usbmon.dll
ModLoad: 67200000 67217000   C:\WINDOWS\system32\HPBHealr.dll
ModLoad: 00f70000 00fa3000   C:\WINDOWS\system32\HpTcpMon.dll
ModLoad: 00fb0000 00fee000   C:\WINDOWS\system32\HPTcpMUI.dll
ModLoad: 77530000 775c7000   C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.3959_x-
ModLoad: 01410000 01435000   C:\WINDOWS\system32\hpzjrd01.dll
ModLoad: 01460000 0147f000   C:\WINDOWS\system32\hptcpmib.dll
ModLoad: 72000000 72007000   C:\WINDOWS\system32\mgmtapi.dll
ModLoad: 71f50000 71f58000   C:\WINDOWS\system32\snmpapi.dll
ModLoad: 71ff0000 71ffe000   C:\WINDOWS\system32\wsnmp32.dll
(d24.fe0): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=01493aa0 ebx=00000000 ecx=00000000 edx=0093e6e8 esi=01492290 edi=7c829e08
eip=00f75d71 esp=0093e48c ebp=0093e774 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206
*** WARNING: Unable to verify checksum for C:\WINDOWS\system32\HpTcpMon.dll
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\HpTcpMon.dll -
HpTcpMon+5d71:
00f75d71 8901             mov     [ecx],eax         ds:0023:00000000=????????
0:005>

Die Ursache für den Fehler ist bei HP im Dokument HP Color LaserJet 2600n – Spooler SubSystem App Error Message beschrieben:

    This error occurs when a newer version of HP’s Standard TCP/IP Port monitor (hptcpmon.dll), that is not compatible with the HP Color LaserJet 2600n, has been installed by another HP product. Both the HP Color LaserJet 2600n and the other product must both have performed network installations on the same system to encounter this error. To verify the issue browse to the C:\windows\system32 directory and find the file hptcpmon.dll . Right click on the file name and choose Properties . In the Properties dialog choose the version tab. If the version of hptcpmon.dll is previous to 7.1.3.31 use the patch to update the file.

Microsoft dokumentiert das Problem im KB-Artikel The printer spooler may crash randomly on a Windows Server computer that has an HP printer that is installed und liefert einen Workaround: Löschen des Eintrags HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Standard TCP/IP Port sowie Umbenennen der Datei C:\WINDOWS\system32\HpTcpMon.dll.

Nach Anwendung des Workarounds funktionierte der Spooler wieder ohne Probleme. Offenbar wurde also irgendwann eine neuere Version des HP Standard TCP/IP Monitors installiert, die zusammen mit dem Reboot zu dem Problem geführt hat.

Das ist auch der Grund, warum der Fehler auch nach Wiederherstellung der Backups noch auftrat: Zum Zeitpunkt der Sicherungen war die neue Version schon installiert – da seitdem allerdings kein Reboot erfolgte, war lediglich der Grundstein für das Problem gelegt und niemand konnte damit rechnen.

Ach übrigens: Das vom Benutzer beschriebene Problem – also der nicht mehr funktionierende Netzwerkdrucker – war die Folge eines nicht eingesteckten Netzwerkkabels und hatte mit obiger Angelegenheit nichts zutun ;-)

2 Responses to “Windows Druckwarteschlange stürzt ab: The Print Spooler service terminated unexpectedly”


  1. 1 marga lukas Oktober 1, 2012 um 9:37 am

    super tolle beschreibung auch für laien verständlich.danke und weiter toi-

  2. 2 Theo Oktober 8, 2012 um 7:51 am

    Der Auslöser für das Problem (Netzwerkkabel) ist natürlich grandios. Kleine Ursache, große Wirkung. (Hier gelandet auch wegen ständigem Beenden der Warteschlange, Lösung war aber eine offene Druckdatei.)


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s





%d Bloggern gefällt das: