システムwiki

Win10カーネルのクラッシュ

Bengt-O 受付中 最終更新日:2022-03-15 06:10

Copyright(c)MicrosoftCorporation.全著作権所有.
カーネルビットマップダンプファイル:完全なアドレス空間が利用可能です
シンボル検索パスは次のとおりです.srv*
実行可能な検索パスは次のとおりです.Windows 10カーネルversion19041MP(8 procs)無料x64
製品:WinNt、スイート:TerminalServer SingleUserTS
エディションBuildラボ:19041.1.amd64fre.vb_release.191206-1406
マシン名:
カーネルベース=0xfffff805`11600000PsLoadedModuleList= 0xfffff805`1222a2d0
デバッグセッション時間:11月26日金曜日01:30:59.731 2021(UTC-5:00)
システム稼働時間:0日11:02:42.405
カーネルシンボルのロード
...............................................................
................................................................
................................................................
..............................
ユーザーシンボルの読み込み
アンロードされたモジュールリストのロード
..................................................
このファイルを分析するには、!analyze-vを実行します.
nt!KeBugCheckEx:
fffff805`119f72a0 48894c2408movqWord ptr [rsp + 8]、rcx ss:0018:ffffcf8d`d866f8e0= 000000000000000a
6:kd>!analyze-v
**
*バグチェック分析*
**
IRQL_NOT_LESS_OR_EQUAL(a)
でページング可能な(または完全に無効な)アドレスにアクセスしようとしました
高すぎる割り込み要求レベル(IRQL).これは通常です
不適切なアドレスを使用しているドライバが原因です.
カーネルデバッガーが使用可能な場合は、スタックバックトレースを取得します.
引数:
Arg1:ffffaa8077e40850、メモリ参照
Arg2:00000000000000ff、IRQL
Arg3:0000000000000000、ビットフィールド:
ビット0:値0=読み取り操作、1=書き込み操作
ビット3:値0=実行操作ではない、1=実行操作(このレベルのステータスをサポートするチップのみ)
Arg4:fffff8051190100c、メモリを参照したアドレス
デバッグの詳細:



KEY_VALUES_STRING:1
鍵:Analysis.CPU.mSec
値:2687
鍵:Analysis.DebugAnalysisManager
値:作成
鍵:Analysis.Elapsed.mSec
値:3611
鍵:Analysis.Init.CPU.mSec
値:48437
鍵:Analysis.Init.Elapsed.mSec
値:278785
鍵:Analysis.Memory.commitPeak.Mb
値:377
鍵:WER.OS.Branch
値:vb_release
鍵:WER.OS.タイムスタンプ
値:2019-12-06T14:06:00Z
鍵:WER.OS.Version
値:10.0.19041.1
BUGCHECK_CODE:a
BUGCHECK_P1:ffffaa8077e40850
BUGCHECK_P2:ff
BUGCHECK_P3:0
BUGCHECK_P4:fffff8051190100c
READ_ADDRESS:ffffaa8077e40850
BLACKBOXBSD:1(!blackboxbsd)
BLACKBOXNTFS:1(!blackboxntfs)
BLACKBOXPNP:1(!blackboxpnp)
BLACKBOXWINLOGON:1
PROCESS_NAME:システム
TRAP_FRAME:ffffcf8dd866fa20-(.trap 0xffffcf8dd866fa20)
注:トラップフレームには、すべてのレジスタが含まれているわけではありません.
一部のレジスタ値はゼロまたは正しくない可能性があります.
rax= 0000000000000000 rbx= 0000000000000000 rcx= 00000000061210f6
rdx= 0000000000000000 rsi= 0000000000000000 rdi= 0000000000000000
rip= fffff8051190100c rsp= ffffcf8dd866fbb0 rbp= ffffaa8037e40180
r8= 0000000000000000r9= ffffaa8037e40180 r10= fffff80512324a00
r11= 0000000000000000 r12= 0000000000000000 r13= 0000000000000000
r14= 0000000000000000 r15= 0000000000000000
iopl= 0nv up di pl nz na pe nc
nt!KiUpdateSpeculationControl + 0x10c:
fffff805`1190100c41808ed006000002またはバイトptr[r14+ 6D0h]、2 ds:00000000`000006d0=?
デフォルトスコープのリセット
STACK_TEXT:
ffffcf8d`d866f8d8 fffff805`11a09269:00000000`0000000a ffffaa80`77e40850 00000000`000000ff 00000000`00000000:nt!KeBugCheckEx
ffffcf8d`d866f8e0 fffff805`11a05569:00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000:nt!KiBugCheckDispatch + 0x69
ffffcf8d`d866fa20 fffff805`1190100c:00000000`00000000 00000000`00000001 ffffaa80`37e40180 ffffaa80`37e40180:nt!KiPageFault + 0x469
ffffcf8d`d866fbb0 fffff805`119fe4b2:000fa425`b59bbfff 00000000`00000001 00000000`00000000 fffff805`119fadca:nt!KiUpdateSpeculationControl + 0x10c
ffffcf8d`d866fc20 fffff805`119faee6:ffffffff`00000000 ffffaa80`37e4b240 ffff8609`08e60080 00000000`0000040f:nt!SwapContext + 0x1b2
ffffcf8d`d866fc60 00000000`00000000:ffffcf8d`d8670000 ffffcf8d`d866a000 00000000`00000000 00000000`00000000:nt!KiIdleLoop + 0x176
SYMBOL_NAME:nt!KiUpdateSpeculationControl + 10c
MODULE_NAME:nt
IMAGE_NAME:ntkrnlmp.exe
STACK_comMAND:.cxr; .ecxr; kb
BUCKET_ID_FUNC_OFFSET:10c
FAILURE_BUCKET_ID:AV_nt!KiUpdateSpeculationControl
OS_VERSION:10.0.19041.1
BUILDLAB_STR:vb_release
OSPLATFORM_TYPE:x64
OSNAME:Windows 10
FAILURE_ID_HASH:{431d2158-d4ba-bb46-b2a9-7d404cafa803}
ファローアップ:MachineOwner

返信リスト(回答:7)

5 #
RezaAme

コードとメモリの参照が原因の場合もあります.

メモリ参照またはポインタを使用してコードを記述した場合にも同様の動作が見られましたが、これはコードのバグが原因です.

クラッシュすると、どのエラーコードが表示されているのでしょうか?

応答5# ->にスキップ
3 #
Bengt-O

コードの問題を除外したくありません.追跡する方法がわからないだけです.

マシンがクラッシュして再起動します.したがって、メッセージはありません.

コードをデバッグモードとリリースモードで実行しました.違いは、クラッシュにかかる時間だけです.

VS内で実行しましたが、問題は発生しませんでした.つまり、例外はありませんでした.

これは、例外がカーネルモードで発生することを意味すると思いますか?

応答3# ->にスキップ
2 #
--dashd

技術的には、Applicationがシステムをクラッシュさせてはなりません.Windowsは、Applicationのクラッシュに対処して、Windowsやシステムをダウンさせないようにする必要があります.Windows、ドライバー、BIOSの問題、ハードウェアが可能です.
ただし、システムを(熱に関係なく)不正なコードで使いすぎたり、負担をかけたりして、Windowsを飢えさせ、Windowsが何もできなくなったために、飢餓によってシステムがクラッシュする可能性があります.しかし、それがデバッグとログの目的です.これに基づいてコードを書いたかどうかはわかりません.コード内で問題が発生するApplicationでのドライバー、Windows APIなどの使用は、実際にはApplicationの障害ではありませんが、Applicationは別の方法で問題を回避できます.
私は上からいくつかのアイデアを得ることができますが、問題がどこにあるのか、またはあなたが何をすべきかなど、それらがどのように考慮されるのかわかりません.しかし、2つのアイデアとしてIRQL_NOT_LESS_OR_EQUALとKiUpdateSpeculationControlもあります.1つ目は、ドライバー、不良システムファイル、ものにあなたを連れて行く可能性があり、もう1つは、スペクターやメルトダウンのセキュリティ上の欠陥など、投機的実行サイドチャネルの緩和であるように見えます.

スペクターとメルダウンのセキュリティを無効にすることもできますが、これは完全にまたは部分的に行うことができると思います.私はAMDCPUでそうする理由を見たことがありません.しかし、私はあなたがそうするのに十分なApplicationを信頼していると思います.それがうまくいくかどうかわからない.暗闇の中でのショット.

https://msrc.Microsoft.com/update-guide/vulnerability/ADV180002

もちろん、それが唯一のことである場合は、それを使用せずに先に進むこともできます.

応答2# ->にスキップ
1 #
Bengt-O

コードを書きました.これはかなり単純なコマンドラインC++プログラムであり、マルチスレッドでSTLを使用します.注:マルチスレッドを使用する前でもクラッシュが発生しました.ネットワーキングはありません.

大まかに言えば、かなり小さなオブジェクトがあります(いくつかのKB) これは変更中であり、より大きな読み取り専用オブジェクト(数MB)です.小さい方のオブジェクトはすべてのスレッドにコピーされ、大きい方のオブジェクトはスレッド間で共有されます.各スレッドは小さいオブジェクトを再帰的に操作します.再帰の深さは数十から数百のオーダーです.

私は脆弱性のメモをざっと読みました.STLコードがそれを悪用していると思うので、それが適切かどうかはわかりません.

私のコードは確かにそうではありません.

それがまったく役に立ったかどうかわからない.

応答3# ->にスキップ
6 #
RezaAme

この場合、スタートを開いてフィードバックを検索し、フィードバックハブアプリを開いてこの問題を報告し、ダンプファイルを含めることをお勧めします.これにより、Windowsチームが調査できるようになります.

>

応答6# ->にスキップ
4 #
Bengt-O

やった、ありがとう!