技術ノート KGTN 2013110601

技術ノート KGTN 2013110601
現 象
[GGW3.2.1] GG の ga.dll で BSOD が発生したが,このメモリダンプから何が読み取れるか?
説 明
先ず BSOD が発生した ga.dll の機能はログオン時の認証処理を行っており,この ga.dll で BSOD が発生し
た事例は過去に1件もありません.以下,ご提供頂いたメモリダンプを解析して読み取れたことをご説明します.
この BSOD 発生の直接の引き金となったのは,プロセス logon.exe (89789d88) がプロセス csrss.exe
(89889d88) を強制終了しようとした事です.問題となった csrss.exe ですが,これは一般的な Windows 環境
で見られる Windows システム由来のプロセスではなく,GG のサービス aps.exe の配下のプロセスです.
BSOD 発生時, csrss.exe と logon.exe についてそれぞれ下記のプロセスが存在しました.
Image: csrss.exe
PROCESS 8b0e3d88 SessionId:
PROCESS 89889d88 SessionId:
PROCESS 896d2020 SessionId:
PROCESS 89495490 SessionId:
PROCESS 89886858 SessionId:
0
0
0
0
0
Cid:
Cid:
Cid:
Cid:
Cid:
018c
1fbc
2148
0bd8
2144
Peb:
Peb:
Peb:
Peb:
Peb:
7ffda000 ParentCid: 0150 (X)
7ffde000 ParentCid: 0d50 (A)
7ffde000 ParentCid: 0d50
7ffde000 ParentCid: 0d50
7ffde000 ParentCid: 0d50
Image: logon.exe
PROCESS 89789d88 SessionId:
PROCESS 897bf468 SessionId:
PROCESS 89309650 SessionId:
PROCESS 895ae5e0 SessionId:
0
0
0
0
Cid:
Cid:
Cid:
Cid:
1dd4
15fc
147c
0dc8
Peb:
Peb:
Peb:
Peb:
7ffde000 ParentCid: 0d50 (B)
7ffde000 ParentCid: 0d50
7ffde000 ParentCid: 0d50
7ffde000 ParentCid: 0d50
上記のプロセス (X) 以外は,親プロセス ID (ParentCid) は 0d50 となっていました.また, 0d50 はプロセス
aps.exe を指していました.
PROCESS 89be7d88 SessionId: 0 Cid: 0d50 Peb: 7ffdf000 ParentCid: 01d4
DirBase: bfff2800 ObjectTable: e438a848 HandleCount: 1165.
Image: aps.exe
つまり,プロセス(X) は Windows システム由来のプロセス csrss.exe で,その他は GG の配下のプロセスとい
うことです.そして,GG 配下のプロセス (B) がプロセス (A) を強制終了しようとしたという状況で BSOD が発生
しました.
ところで,GG サーバーの通常動作として,GG 経由でサーバーにログインする場合,セッション毎に2つのプロ
セス logon.exe と csrss.exe が生成されます.そして GG サーバーからログアウトする際に,この2つのプロセ
ス logon.exe と csrss.exe は終了します.つまり 「GG 環境では csrss.exe の生成と終了は日常的に問題な
く正常に行われている処理である」 ということです.
csrss.exe は GG 配下のものであっても強制終了させようとすると BSOD が発生します (注: マイクロソフト社
のツール Process Explorer 等で aps.exe 配下の csrss.exe を強制終了させても BSOD が発生します).こ
のことから,GG は通常 csrss.exe を強制終了するのではなく csrss.exe に終了を依頼しており, csrss.exe
が終了要求に応じなかった場合に備え,例外処理として強制終了処理を行うようになっております.
今回の BSOD は,何らかの理由 (例えばアンチウイルスソフト等の影響による処理遅延など) で csrss.exe へ
の終了要求が正常に処理されず,その結果としてこの例外処理が行われ, csrss.exe の強制終了になったと
考えられます.なお,元々の原因の発生は BSOD 発生時点よりも過去の事象と推測されますので,メモリーダ
ンプ (だけ) から見つけられる可能性は低いと思われます.
GraphOn 社に詳細な解析を依頼したところ,推測の通りアンチウイルスソフトが csrss.exe を終了させたという
回答がありました.詳細は以下の通りです.
The customer have some Symantec product that terminated our session CSRSS (and since
CSRSS is a critical process the system BSOD). The faulting driver name is: SYMEVENT.
Not sure what it is... but it decided to terminate our CSRSS.
Maybe try uninstall/disable their (Symantec's) drivers/services.
Last reviewed: Nov 19, 2013
Status: DRAFT
Ref: CASE#39405
Coyright © 2013 kitASP Corporation