Forum Discussion

JohnLiao's avatar
JohnLiao
Copper Contributor
Aug 22, 2026

[GSOD]SYSTEM_SERVICE_EXCEPTION in win32kfull!SetMagnificationInputTransform when a process exits

问题概述

Windows 11 Insider Experimental 26H2 Build 26340.9233 连续发生两次绿屏崩溃。

两份 minidump 经 WinDbg 分析后指向完全相同的故障函数、调用栈、触发进程及故障哈希。崩溃发生在 Windows 销毁进程关联的桌面对象,并清理屏幕放大输入变换状态时。

系统环境

  • 操作系统:Windows 11 Pro for Workstations
  • Insider 通道:Experimental
  • 显示版本:26H2
  • 完整系统版本:26340.9233
  • BuildLabEx:26100.6.amd64fre.ge_release_flt.260716-1700
  • 系统架构:x64
  • win32kfull.sys 版本:10.0.26100.9233
  • BIOS Revision:1.42.0.0
  • Hyper-V:已启用

故障现象

系统显示绿色停止错误画面并自动重启:

  • Stop code:SYSTEM_SERVICE_EXCEPTION
  • Bugcheck:0x0000003B
  • Exception code:0xC0000005
  • What failed:win32kfull.sys

该问题在同一天连续发生两次,并分别生成以下转储:

  • 082226-21906-01.dmp
  • 082226-21734-01.dmp

WinDbg 分析结果

两份转储的分析结果一致:

BUGCHECK_CODE: 3b BUGCHECK_P1: c0000005 PROCESS_NAME: codex-command-runner-0.149.0-alpha.4.1.exe FAILURE_BUCKET_ID: AV_win32kfull!SetMagnificationInputTransform FAILURE_ID_HASH: {527223d9-4b8b-e502-e7e6-16fc4649fd38} SYMBOL_NAME: win32kfull!SetMagnificationInputTransform+39 IMAGE_NAME: win32kfull.sys IMAGE_VERSION: 10.0.26100.9233

故障指令:

win32kfull!SetMagnificationInputTransform+0x39: mov rbx, qword ptr [rax+1F0h] RAX = 0000000000000000

这表明内核代码尝试通过空指针读取内存,从而触发 0xC0000005 访问冲突。

关键调用栈

nt!NtTerminateProcess nt!PspExitThread nt!PspExitLastThread nt!PspRundownSingleProcess nt!ObKillProcess nt!ExSweepHandleTable nt!ExpWin32CloseProcedure win32k!W32CalloutDispatchThunk win32kbase!W32CalloutDispatch win32kfull!UnmapDesktop win32kfull!DestroyDesktop win32kfull!zzzDecomposeDesktop win32kfull!MagpDecomposeDesktop win32kfull!MagpRevokeInputTransfrom win32kfull!CancelMagnificationInputTransform win32kfull!SetMagnificationInputTransform+0x39

从调用栈判断,崩溃发生在以下过程中:

  1. codex-command-runner 进程退出;
  2. Windows 清理该进程及其桌面对象;
  3. win32kfull.sys 撤销 Magnification Input Transform;
  4. SetMagnificationInputTransform 解引用空指针;
  5. 系统触发 SYSTEM_SERVICE_EXCEPTION。

重复性

两次崩溃均具有以下共同点:

  • 相同停止代码和异常类型;
  • 相同故障函数及函数偏移;
  • 相同的空指针访问方式;
  • 相同触发进程及版本;
  • 相同桌面销毁和放大输入变换清理调用栈;
  • 相同 Failure ID Hash。

因此,该问题具有较强的可重复性,不像随机硬件错误。

目前尚未完全确定具体的用户操作序列,但两次均发生在 Codex 桌面应用的本地命令运行器退出期间。该进程看起来是触发场景;实际非法访问发生在 Windows 内核的 win32kfull.sys 中。

预期行为

任何普通用户态进程退出或其桌面对象被销毁时,Windows 都应安全清理 Magnification Input Transform 状态。即使相关状态不存在、已经释放或不完整,也不应发生内核空指针访问或导致整个系统崩溃。

实际行为

win32kfull!SetMagnificationInputTransform 在桌面销毁路径中收到或获取了空对象,但没有在访问对象偏移 0x1F0 前进行有效性检查,最终导致系统级崩溃。

希望微软协助调查

请重点检查 Build 26340.9233 中以下方面:

  • SetMagnificationInputTransform 的对象生命周期和空指针检查;
  • CancelMagnificationInputTransform 与 MagpRevokeInputTransfrom 的重复撤销或竞态条件;
  • 临时桌面、隔离桌面或进程退出时的 DestroyDesktop 清理路径;
  • Experimental 26340 系列中 Magnifier 相关改动是否影响输入变换状态;
  • 短时间内创建并销毁桌面的应用是否能够稳定触发该问题。

English engineering summary

Two independent minidumps from Windows 11 Insider Experimental Build 26340.9233 show an identical SYSTEM_SERVICE_EXCEPTION (0x3B) with 0xC0000005.

The crash occurs at:

win32kfull!SetMagnificationInputTransform+0x39 mov rbx, qword ptr [rax+1F0h] RAX = 0

Both dumps have the same process, stack, failure bucket and failure hash:

PROCESS_NAME: codex-command-runner-0.149.0-alpha.4.1.exe FAILURE_BUCKET_ID: AV_win32kfull!SetMagnificationInputTransform FAILURE_ID_HASH: {527223d9-4b8b-e502-e7e6-16fc4649fd38}

The process is terminating, Windows destroys its associated desktop, and the kernel crashes while revoking the Magnification Input Transform:

NtTerminateProcess → PspRundownSingleProcess → ExpWin32CloseProcedure → UnmapDesktop → DestroyDesktop → MagpDecomposeDesktop → MagpRevokeInputTransfrom → CancelMagnificationInputTransform → SetMagnificationInputTransform → NULL pointer dereference

Please investigate the object lifetime, synchronization and null validation in the Magnification Input Transform cleanup path when a temporary or isolated desktop is destroyed.

1 Reply

  • The two matching dumps make this a reproducible kernel-path regression rather than a random application crash. Bug check 0x3B with 0xC0000005 confirms an access violation in privileged code, but the stack does not prove that the terminating Codex process caused the defect; it may only trigger the cleanup path. Update to the newest available build in your Insider channel and install current display, input, and accessibility drivers, then test the same process-exit sequence again. If it reproduces, submit a Feedback Hub problem from that build, start “Recreate my problem” immediately before reproduction, and include both dump hashes, stack, build number, and steps. Upload dumps only through Feedback Hub or a private Microsoft support channel because they can contain sensitive data. Also share the Feedback Hub collection link here. Until Microsoft confirms a fix, disable the triggering workflow or move the affected machine to a stable Windows build.