Crash in Windows.Graphics.Printing / PrintTaskServer::RuntimeClassInitialize when opening the classic print dialog from a Win32 app (IPP Class Driver)

Thomas Müller 0 Zuverlässigkeitspunkte
2026-08-31T11:47:54.08+00:00

Crash in Windows.Graphics.Printing / PrintTaskServer::RuntimeClassInitialize when opening the classic print dialog from a Win32 desktop app

Summary

We are the developers of a native Win32 desktop application (Qt 5.15.19, x86, QPrintDialog/ QPrinter for all printing — no direct use of Windows.Graphics.Printing, PrintManager, or any other WinRT printing API anywhere in our own code, confirmed by a full source search). Across a set of crash dumps collected from real customer machines over 3 days, we found 9 access-violation crashes (out of 15 total crashes analyzed in that period) that all originate inside Windows' own modern print stack, triggered from a completely standard QPrintDialog call.

Environment

  • Application: 32-bit (x86) native C++/Qt 5.15.19 desktop application

Printing API used by the app: QPrintDialog / QPrinter (Qt's native Windows backend, which itself wraps the classic GDI PrintDlgEx) OS build seen in the dumps: Windows, build lab 26100.1.amd64fre.ge_release.240331-1435 (dump header reports "Windows 10 Version 26200", but the build-lab string corresponds to the 26100 branch) Affected: multiple physical workstations on a small business LAN, over a 3-day window (9 crashes across 3 different machines)

Crash signature

Exception: 0xC0000005 (access violation) / seen as a DEP-style "execute non-executable memory" fault in our logging, instruction pointer lands outside any loaded module (garbage/invalid code pointer), so the top frame resolves to a raw address. The call stack immediately below the invalid frame is fully symbol-resolved (Microsoft public symbol server) and is identical (module + function names) in 7 of the 9 cases, with 2 more cases showing the same call chain but a different garbage target address for the invalid jump:

ntdll.dll / combase.dll:
  Microsoft::WRL::ComPtr
Entwicklertechnologien | C++
Entwicklertechnologien | C++

Eine hochentwickelte, allgemeine Programmiersprache, die als Erweiterung der Programmiersprache C entwickelt wurde und neben den Möglichkeiten der Speicherbearbeitung auf untergeordneter Ebene auch objektorientierte, generische und funktionale Features bietet.

0 Kommentare Keine Kommentare

3 Antworten

Sortieren nach: Am hilfreichsten
  1. Deleted

    Diese Antwort wurde aufgrund eines Verstosses gegen unsere Verhaltensregeln gelöscht. Die Antwort wurde manuell gemeldet oder durch automatisierte Erkennung identifiziert, bevor Massnahmen ergriffen wurde. Weitere Informationen finden Sie in unseren Verhaltensregeln.


    Kommentare wurden deaktiviert. Weitere Informationen

  2. Deleted

    Diese Antwort wurde aufgrund eines Verstosses gegen unsere Verhaltensregeln gelöscht. Die Antwort wurde manuell gemeldet oder durch automatisierte Erkennung identifiziert, bevor Massnahmen ergriffen wurde. Weitere Informationen finden Sie in unseren Verhaltensregeln.


    Kommentare wurden deaktiviert. Weitere Informationen

  3. Tony Thach (WICLOUD CORPORATION) 1,435 Zuverlässigkeitspunkte Externe Microsoft-Mitarbeiter Moderator
    2026-09-01T02:10:47.5833333+00:00

    Hi @Thomas Müller , and thanks for posting your question.

    I attempted to reproduce the issue on my side but was unable to trigger the crash. However, nine dumps from three separate workstations, with seven showing the same resolved call path, are strong evidence of a repeatable failure pattern rather than an isolated random crash.

    I could not find any publicly documented Windows known issue that matches this particular combination of symptoms: PrintTaskServer::RuntimeClassInitialize, Windows.Graphics.Printing, 0xC0000005 during PrintDlgEx,...

    This does not mean that the report is invalid or that an unpublished defect cannot exist. It means that the current evidence cannot yet be mapped to a published fix or known-issue identifier.

    The stack shows that Windows was initializing printing components when the invalid call occurred. However, because the instruction pointer is already corrupted, the stack alone cannot establish whether the invalid pointer originated in Windows printing code, the IPP capability path, printer firmware, a Print Support App, or an earlier corruption in the process.

    Given that the same signature occurred on multiple workstations in the same network, the highest-priority common factors are:

    1. The same IPP printer or printer model
    2. Microsoft IPP Class Driver and queue configuration
    3. Printer firmware and its reported IPP capabilities
    4. A shared Print Support App or vendor printer component
    5. The same Windows update level

    Qt cannot be completely excluded without a minimal comparison, but based on the repeated cross-machine signature, it should not be the first troubleshooting target.

    On one affected workstation, please test the following:

    1. Set Microsoft Print to PDF as the default printer.
    2. Restart the application and open the print dialog repeatedly.
    3. If the crash stops, remove and recreate the affected IPP printer queue.
    4. Update Windows, printer firmware, and any associated Print Support App.
    5. If the manufacturer provides a supported driver, create a separate test queue using that driver instead of Microsoft IPP Class Driver.

    Microsoft IPP Class Driver is Windows’ inbox IPP driver, and IPP printer functionality can also involve an associated Print Support App. Therefore, reinstalling or changing the queue may bypass corrupted queue state, problematic capability data, or a PSA-specific path.

    Microsoft also recommends reinstalling the printer and obtaining the latest driver when addressing printer-driver compatibility problems.

    If changing the default printer to Microsoft Print to PDF prevents the crash, using that queue as the default is a reasonable temporary mitigation. This is not a confirmed permanent fix.

    What the comparison would establish

    • Only the IPP queue triggers the crash: The investigation should focus on that queue, its capability response, firmware, PSA, and IPP-related Windows path.
    • The manufacturer-driver queue works: It can be used as a temporary workaround, although this would not by itself prove that Microsoft IPP Class Driver contains the defect.
    • Other applications crash with the same printer: Qt and application-specific logic become substantially less likely to be required for the failure.
    • Microsoft Print to PDF also triggers it: The scope is broader than one IPP printer and requires full-dump analysis.

    For the next step, could you confirm only:

    1. Whether all three workstations connect to the same printer or printer model
    2. The exact printer model, firmware, driver name, and any installed Print Support App
    3. Whether the crash stops when Microsoft Print to PDF is the default printer

    If the signature remains reproducible after recreating the queue and updating firmware/software, the existing dump pattern appears sufficiently consistent to justify deeper investigation using a full user-mode dump. Please retain the original dumps, executable, PDB files, and exact Windows build information.

    If this instruction is applicable to your situation, I would greatly appreciate it if you could follow the instruction here so others experiencing similar behavior can benefit from it as well.  

    War diese Antwort hilfreich?


Ihre Antwort

Antworten können von Fragestellenden als „Angenommen“ und von Moderierenden als „Empfohlen“ gekennzeichnet werden, wodurch Benutzende wissen, dass diese Antwort das Problem des Fragestellenden gelöst hat.