2013/11/15

Windows 7 mstsc.exeがクラッシュする原因~ntdll.dllと0xC0000374とCSR Bluetoothスタック

Windows 7のリモートデスクトップ接続(mstsc.exe)が突然、利用できなくなりました。
時間が非常にかかりましたが、原因と対処法をメモ。
一つだけ言わせてもらうと「CSR社製Bluetooth スタック、大嫌い!」です。

今回の現象

  • Windows 7 Professional 64bitのクライアントPCを利用
  • 11/14にWindows Updateを実施、OS等は最新状態
  • リモート デスクトップ接続(mstsc.exe)を実行(パスワード等を入力)
  • [リモート デスクトップ接続 は動作を停止しました]のウィンドウが表示される
2013-11-11_084614
mstsc.exeのバージョン情報は下記の通り。
2013-11-14_131043
Application Error ログ
障害が発生しているアプリケーション名: mstsc.exe、バージョン: 6.1.7601.17514、タイム スタンプ: 0x4ce7ab44
障害が発生しているモジュール名: ntdll.dll、バージョン: 6.1.7601.18247、タイム スタンプ: 0x521eaf24
例外コード: 0xc0000374
障害オフセット: 0x00000000000c4102
障害が発生しているプロセス ID: 0x954
障害が発生しているアプリケーションの開始時刻: 0x01cee0ef83848de7
障害が発生しているアプリケーション パス: C:\Windows\system32\mstsc.exe
障害が発生しているモジュール パス: C:\Windows\SYSTEM32\ntdll.dll
レポート ID: fce7fb65-4ce2-11e3-ae7e-0009dd404bad
Windows Error Report ログ
障害バケット 134637766、種類 4
イベント名: APPCRASH
応答: 使用不可
Cab ID: 0
問題の署名:
P1: mstsc.exe
P2: 6.1.7601.17514
P3: 4ce7ab44
P4: StackHash_423a
P5: 6.1.7601.18247
P6: 521eaf24
P7: c0000374
P8: 00000000000c4102
P9:
P10:
添付ファイル:
C:\Users\ユーザ名\AppData\Local\Temp\WER8BCD.tmp.WERInternalMetadata.xml
これらのファイルは次の場所にある可能性があります:
C:\Users\ユーザ名\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_mstsc.exe_804b777746cdd9cfe3869fa3ecb7cf773ab686_0ef8ab3e
分析記号:
解決策を再確認中: 0
レポート ID: fce7fb65-4ce2-11e3-ae7e-0009dd404bad
レポートの状態: 0

VSの”プロセスの呼出し履歴”を使ってみる

修行の一環としてVistual Studio Express(VS)をたまに使っており、プロセスの挙動を確認してみました。
結果、ntdll.dllのヒープが壊れている(0xC0000367)とのこと。
残念ながらこれ以上の情報が得られず、原因不明・・・
  1. リモートデスクトップ接続(mstsc.exe)を起動しておく
  2. VSを起動、[ツール]→[プロセスにアタッチ]をクリック
    image
  3. [選択可能なプロセス]一覧から[mstsc.exe]を見つけ、[アタッチ]ボタンをクリック
    2013-11-15_092438
  4. [デバッグ]→[ウィンドウ]→[呼び出し履歴]をクリック
    または、[Alt]+[7]を押す
    2013-11-15_092558
  5. リモートデスクトップ接続を実行(パスワード等を入力)
  6. [ブレークポイントが発生]するので[中断]ボタンをクリック
[出力]内容や[シンボルの詳細]を確認。
~CBtProxyCB
'mstsc.exe' (Win32): 'C:\Program Files\Common Files\Microsoft Shared\Windows Live\WLIDCREDPROV.DLL' がアンロードされました
'mstsc.exe' (Win32): 'C:\Windows\System32\certCredProvider.dll' がアンロードされました
'mstsc.exe' (Win32): 'C:\Windows\System32\BioCredProv.dll' がアンロードされました
'mstsc.exe' (Win32): 'C:\Windows\System32\vaultcli.dll' がアンロードされました
'mstsc.exe' (Win32): 'C:\Windows\System32\winbio.dll' がアンロードされました
'mstsc.exe' (Win32): 'C:\Windows\System32\SmartcardCredentialProvider.dll' がアンロードされました
'mstsc.exe' (Win32): 'C:\Windows\System32\LMIinit.dll' がアンロードされました
Critical error detected c0000374
mstsc.exe によってブレークポイントが発生しました。
初回例外が 0x0000000076DD4102 (ntdll.dll) で発生しました (mstsc.exe 内): 0xC0000374: ヒープは壊れています。 (パラメーター: 0x0000000076E4B4B0)。
ハンドルされない例外が 0x0000000076DD4102 (ntdll.dll) で発生しました(mstsc.exe 内): 0xC0000374: ヒープは壊れています。 (パラメーター: 0x0000000076E4B4B0)。
初回例外が 0x0000000076D65A41 (ntdll.dll) で発生しました (mstsc.exe 内): 0xC0000005: 場所 0x0000000000000000 の読み取り中にアクセス違反が発生しました。
プログラム '[7776] mstsc.exe' はコード 0 (0x0) で終了しました。

原因はCSR Harmony Wireless Software Stack

image
全く原因が分からない状況でしたが、直前の行動を思い返してみました。
数週間前にLogitec社製Bluetoothドングル「LBT-UAN04C2」を購入、CSR社製[CSR Harmony Wireless Software Stack]をインストールした事くらい。
念のため、[CSR Harmony Wireless Software Stack]をアンインストールしてみたところ、解決しました
アンインストール前後のntdll.dllのプロパティを見比べましたが、差異はありません。
CSR社のソフトウェアは何をしてくれたんだろうか・・・
いい迷惑&渡米前なのに疲れた・・・
2013-11-15_161351
SmartCardによるもの?
同じ現象が起きた方のブログ記事によると、RDPのローカルリソースにある「スマートカード」が原因と説明されていました。
前述のスタックトレースに「SmartcardCredentialProvider.dll」の文字が・・・
リモートデスクトップ接続がクラッシュする - 普段はWindowsを使っているのよ
現在は同Bluetooth ドングルを使っていないので確認できていませんが、RDPの[ローカル デバイスとリソース]の[詳細]ボタンをクリックし、[スマート カード(複数)]のチェックを外せばいいようです。
勉強になります。

余談:CSR社製BTスタックとThinkPad Bluetooth キーボード
今回購入したロジテック社Bluetoothドングルは、CSR社のBTスタックを使用します。
このBTスタックをインストールすると「ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボード」は使えません。
理由は、ペアリングするためのウィザードが表示されない=機器を認証できないためです。
では、どうやってThinkPad Bluetooth ワイヤレス・トラックポイント・キーボードを使うのか?
CSR Harmony Wireless Software Stackをアンインストールし、Windows標準BTスタックを利用する
ことです。
下記はアンインストールする前に行った作業手順です。
  1. CSR Harmony Wireless Software Stackをアンインストール
  2. Bluetoothアダプタを抜き差しする
  3. 標準ドライバが適用されるのを待つ
    image
下記3点はドライバがないため利用する事が出来ません。
個人的には、キーボードが使えればそれだけでいいので無視するつもりです。
image
image
image
スポンサーリンク

スポンサーリンク