VSS レガシー トレース有効時に Bugcheck 0x7E が発生する問題

Last Update: feedback 共有

本記事はマイクロソフト社員によって公開されております。

いつも弊社製品をご利用いただきまして誠にありがとうございます。
Windows Commercial Support の相沢です。

今回は、VSS レガシー トレースが有効な場合に、弊社のボリューム シャドウ コピー ドライバー(Volsnap.sys)の処理に起因して Bugcheck 0x7E (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED)、0x50 (PAGE_FAULT_IN_NONPAGED_AREA) が発生する問題についてご案内いたします。

現象が報告されている OS

  • Windows Server 2016
  • Windows Server 2019
    ※ Windows Server 2022 では本事象は修正済みとなっております。

概要

Volsnap.sys ドライバーは OS 内部で動作するボリューム シャドウ コピー関連のドライバーとなります。本ドライバーには、従来から実装されている VSS レガシー トレース(VspDiagTrace)と、現在主流の ETW トレースが実装されております。

VSS レガシー トレースについては今後削除される予定ですが、本記事執筆時点では Windows Server 2019 まで既定で有効化されております。しかしながら、VSS レガシー トレースが有効のまま使用していると、(現時点では報告事例が極めて少ない状況ですが)バックアップの実行時等のタイミングで稀に Bugcheck 0x7E または 0x50 が発生する場合がございます。

原因

VSS レガシー トレースでは、システムに接続されているログ対象のボリューム情報の取得処理を行いますが、volsnap.sys の不具合に起因して当該処理時に Bugcheck が発生する場合がございます。本事象に該当している場合には、以下のコールスタックでシステムがクラッシュいたします。
※ 全ての Bugcheck 0x50 / 0x7E が本不具合に該当するわけではございませんので、該当するかどうかはシステム クラッシュ時のメモリ ダンプよりコールスタックを確認する必要がございます。

# Child-SP RetAddr Call Site
00 nt!KeBugCheckEx
01 nt!PspSystemThreadStartup$filt$0+0x44
02 nt!_C_specific_handler+0x9f
03 nt!RtlpExecuteHandlerForException+0xd
04 nt!RtlDispatchException+0x421
05 nt!KiDispatchException+0x1e4
06 nt!KiExceptionDispatch+0xc2
07 nt!KiPageFault+0x406
08 nt!IofCallDriver+0x4b
09 volsnap!VspQueryDeviceNameFromTarget+0x93
0a volsnap!VspQueryVolumeName+0x3a
0b volsnap!VspDiagTrace+0x197
0c volsnap!VspAdjustBitmap+0x14c
0d nt!ExpWorkerThread+0xe9
0e nt!PspSystemThreadStartup+0x41
0f nt!KiStartSystemThread+0x16

回避策

本事象は 3rd party のバックアップ製品をご利用されている場合には VSS レガシー トレースを無効化することで回避することが可能です。VSS レガシー トレースの無効化手順については後述いたします。

ただし、Windows Server 2016 に関しましては Windows Server バックアップをご利用されている環境では、VSS レガシー トレースを無効化すると Windows Server バックアップが正常に動作しなくなります。そのため、他社製のバックアップアプリケーションをご利用いただくか、Windows Server 2019 以降の OS バージョンへアップグレードをご検討ください。

Windows Server 2019 と Windows Server 2022 では、VSS レガシー トレースを無効化した状態でも Windows Server バックアップが実行できる更新プログラムがリリースされました。該当する環境については、更新プログラムの適用をお願いいたします。

本不具合については、弊社開発部門が今後リリース予定の OS でも修正が行われました。

なお、Windows Server 2022 でも VSS レガシー トレースを無効化して Windows Server バックアップが実行できるようにする修正は行われておりますが、Bugcheck が発生する本事象については修正済みとなっておりますので、Windows Server 2022 以降では回避策の実施の必要はございません。

また、Windows Server 2016 および Windows Serve 2019 の恒久対応としましては、OS バージョンのアップグレードをご検討ください。

▼ VSS レガシー トレースの無効化手順

  1. 管理者権限で Powershellを起動し、以下のコマンドレットを実行してください。

    1
    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\VSS\Diag -Name "(Default)" -Value "Disabled" -PassThru

    ※ 本コマンドレットにより、以下のレジストリが変更されます。

    キー名 :HKLM\SYSTEM\CurrentControlSet\Services\VSS\Diag
    Type: REG_SZ
    Name: Default
    Data : Disabled

本投稿が少しでも皆様のお役に立てば幸いです。
※ 本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。


変更履歴

  • 2021/03/16 : 本 Blog の公開
  • 2022/01/11 : 現象が報告されている OS の追記
  • 2022/10/12 : VSS レガシートレース無効時での Windows Server バックアップの実行が可能となった更新プログラムの情報を追加
  • 2022/10/27 : VSS レガシートレース無効時での Windows Server バックアップの実行が可能となった更新プログラムの情報を追加 (Windows Server 2022 追加)
  • 2022/11/15 : Windows Server 2019 の KB5018419 に関して KIR プロセスによって修正が無効となっていることを追記
  • 2023/02/15 : Windows Server 2019 に関して KB5022840 にて修正が有効化されたことを追記。KB5018419 については削除
  • 2023/08/07 : Windows Server 2022 では初期リリース時に Bugcheck が発生する問題は修正済みとなっていたことを追記