Ask CORE

Microsoft Japan Windows Technology Support

September, 2014

  • ソース : NTFS、ID: 55 のイベント

    こんにちは。日本マイクロソフトの松岡です。
    今回は、比較的よくお問い合わせをいただく NTFS 55 についてご紹介します。

    -------------------
    イベントの種類: エラー
    イベント ソース: NTFS
    イベント ID: 55
    説明:
    ディスク上のファイル システム構造が壊れていて使えません。chkdsk ユーティリティをボリューム "Drive_letter" で実行してください
    -------------------

    ソース : NTFS、ID: 55 のイベントについて

    ソース : NTFS、ID: 55 のイベントは、ファイルシステム データ構造に不整合を発見した場合に記録されるイベントです。このイベントが記録されるタイミングとしては、ファイル システム構造が破損した状態で、その破損個所にアクセスした際に記録されます。また、破損時点と 本イベントが記録された時点には差異があり、この情報からその前に何が発生したのか原因追求を行うことは困難です。したがって、オペレーションの観点から特に問題がない場合、関連するデバイス ドライバーや、ファームウェアのアップデートを行うことが一般的な対策です。

    一般的な本イベントの要因について

    一般的にこの破損が発生する原因としては、以下の状況が考えられます。

    1. 不正なシャットダウンが発生した場合


    不正なシャットダウンが発生すると、ディスク上の情報を正しく保存せずにシステムが終了するため、ファイル システムに不整合が発生する可能性があります。 

    2. ハードウェアの破損による場合

      
    ハードウェアの破損、故障により、ディスク上のデータが破損して不整合が発生する可能性があります。

    3. ディスクが突然取り外れた、あるいは、アクセスできなかった場合

    ディスクが突然取り外れた、あるいは、アクセスできなくなったような場合には、1 同様、ディスク上の情報が正しく保存されず、ファイルシステムに不整合が発生する可能性があります。

    4. ドライバやアプリケーションによる不正なアクセスがあった場合

    ファイル システム ドライバーや、その他カーネル モードのコンポーネントの不具合により発生する可能性があります。ドライバーやアプリケーションによっては、NTFS ファイル システムを経由せずに、ディスクへ直接アクセス、書き込みを行うものがあります。これらの作用により、 NTFS の意図しない変更がディスク上のデータに加えられ、破損が発生する場合があります。または、ドライバーやアプリケーションによりディスクへのアクセスが突然遮断され、3 のような状況となり、現象が発生する可能性も考えられます。

    本イベントへの対応について

    本イベントへの対応としては、フォーマット後にバックアップからデータを復元するか、修復モードでの chkdsk コマンドを実施します。なお、大容量のボリューム で chkdsk を実行する場合、ボリュームのサイズやマシンのスペック等により、所要時間が非常に長くなることがあります。システムのダウンタイムを考慮した場合、修復モードでの chkdsk の実行よりフォーマットによる対応方法の方が、より少ないダウンタイムで対応が完了する状況も考えられます。事象が発生した環境により、フォーマット後にバックアップ データを復元、または修復モードでの chkdsk の実行を検討してください。

    1. Chkntfs コマンドによる破損が発生しているボリュームの確認

    2. フォーマットによる対応

    3. 修復モードでの chkdsk コマンドによる対応 

    ※ 対応は 2、3 のいずれかの対応で問題ありません。(両方実施する必要はありません。)

    1. Chkntfs コマンドによる破損が発生しているボリュームの確認について

    ファイル システムの破損が発生しているボリュームを特定するには、chkntfs コマンドが使用できます。

    ※ Chkntfs コマンドは、ファイル システムの状態を参照するコマンドのため、サーバーへの大きな負荷はかかりません。

    実行例) 

    > Chkntfs C:

    ファイル システムの破損が発生していない場合の実行結果

    ########################################
    ファイル システムの種類は NTFS です。
    C: は正常です。
    ########################################

    ファイル システムの破損が発生している場合の実行結果

    ########################################
    ファイル システムの種類は NTFS です。
    C: が正しくありません。
    ########################################

    - 参考情報

    Chkntfs

    http://technet.microsoft.com/ja-jp/library/cc731298(v=ws.10).aspx

    2. フォーマットによる対応について

    フォーマットによる対応をされる場合には、必要に応じて該当ボリュームにあるデータを別の領域に退避し、ボリュームを再フォーマットします。フォーマットの完了後、必要に応じて、退避したデータをリストアします。

    3. 修復モードでの chkdsk コマンドによる対応ついて

    chkdsk コマンドはオプションが指定されていない場合、読み取り専用モードで実行されます。chkdsk を /R または /F オプションを指定することにより、ファイルシステムの不整合を修復することができます。なお、修復モードでの chkdsk コマンドを実行した場合でも、実際に破損しているデータについては、修復することはできませんが状態が悪化することはありません。修復モードの chkdsk の実行によりファイル システムの不整合が修復されます。

    実行例)

    > chkdsk c: /R

    なお、chkdsk d: /R の実行時に、何らのプロセスが実行対象のボリュームを利用している場合には、以下のメッセージが表示されます。

    コマンドの実行結果

    ########################################
    ボリュームが別のプロセスによって使用されているため、Chkdsk を実行できません。
    Chkdsk を実行するにはこのボリュームのマウントを解除する必要があります。
    ########################################

    メッセージ1

    ########################################
    このボリュームを強制的にマウントを解除しますか? (Y/N)
    ########################################

    メッセージ2

    ########################################
    ボリュームが別のプロセスで使用されているため、CHKDSK を実行できません。次回のシステム再起動時に、このボリュームのチェックをスケジュールしますか (Y/N)?
    ########################################

    いますぐ chkdsk /R を実行する場合には、メッセージ1 にて Y を、再起動時に chkdsk /R を実行する場合には、メッセージ2 にて Y を選択し実行します。

    - 補足

    オプション /R を指定した場合は、/F も暗黙的に指定されます。対象のボリュームに対して chkdsk /R または /F コマンドの実行によりセクタの修復を試みます。/R は /F に加えて物理的な不良セクタのチェックを行います。

    - 参考情報

    Chkdsk.exe で使用可能な新しいスイッチ /C および /I について

    http://support.microsoft.com/kb/314835/ja

    Chkdsk

    http://technet.microsoft.com/ja-jp/library/cc730714(WS.10).aspx

    再発防止策について

    ハードウェアの破損以外の原因で 本イベントが発生した可能性が考えられる場合には、関連するデバイス ドライバーやファームウェアの最新バージョンを確認し、アップデートを行います。 OS 観点では、ファイルシステム ドライバーの既知の不具合により発生している可能性がありますので、最新の修正プログラム (NTFS.sys) を適用します。また Windows 7、Windows Server 2008 R2 RTM では、NTFS 55 が誤検知されるという、Ntoskrnl.exe の不具合がありますので、こちらも最新の修正プログラムを適用します。

    2014 年 9 月 9 日時点の各 OS に対する最新の修正プログラムは以下のとおりです。

    - Windows Server 2003

    文書番号: 973870

    Windows Server 2003 をランダムに実行しているコンピューターは、データをバックアップするときを応答を停止します。

    http://support.microsoft.com/kb/973870


    - Windows Vista、Windows Server 2008

    文書番号: 2951098

    Event ID 137 is logged when you back up the system state in a 32-bit version of Windows Server 2008

    http://support.microsoft.com/kb/2951098


    - Windows 7、Windows Server 2008 R2

    文書番号 : 2885209

    イベント ID 55 が Windows 7 SP1 または Windows Server 2008 R2 SP1 ベースのファイル サーバーで記録され、Windows がクラッシュすることがある (2014 年 2 月 14 日)

    http://support.microsoft.com/kb/2885209


    文書番号: 2981965 (Ntoskrnl.exe)

    更新管理に Windows のファイル システム ドライバーがすべてのシリアル化のフラッシュ メモリを削除するには

    http://support.microsoft.com/kb/2981965


    -Windows Server 2012

    文書番号: 2973052

    Windows Server 2012 R2 または Windows Server 2012 でボリュームがマウントされているときに"0x00000018"の停止エラー

    http://support.microsoft.com/kb/2973052


    -Windows Server 2012 R2

    文書番号: 2975719

    Windows RT 8.1、8.1 の Windows、および Windows Server 2012 の R2 用の更新プログラムのロールアップ 2014年 8 月

    http://support.microsoft.com/kb/2975719  

    ※ 2014 年 4月以降にリリースされる全ての Windows Server 2012 R2 および Windows RT 8.1、Windows 8.1 におけるアップデートやセキュリティ更新プログラム/修正プログラムは KB 2919355 の適用が前提条件として必要となります。
    そのため、KB 2975719 を適用する前に、KB 2919355 を適用してください。


    -文書番号: 2919355
    Windows RT 8.1、8.1 の Windows および Windows Server 2012 の R2 の更新プログラム: 2014 年 4 月
    http://support.microsoft.com/kb/2919355

    KB 2919355 につきましては、以下のブログも併せてご確認ください。

    Windows 8.1 Update が公開されました。
    http://blogs.technet.com/b/askcorejp/archive/2014/04/09/windows-8-1-update.aspx


    - 参考情報

    EVENT ID 55: When Good Bits Go Bad

    http://blogs.technet.com/b/askcore/archive/2012/05/09/event-id-55-when-good-bits-go-bad.aspx

  • ノード再起動後に、クラスター サービスが、エラー 6609 [無効なログ ブロックが見つかりました。] で起動しない

    こんにちは。Windows プラットフォーム サポートの加藤です。
    本日は、ノード再起動後にクラスター サービスが起動できなくなる障害事例についてご紹介します。

    今回ご紹介させていただく内容としましては以下の3 点です。

    <障害内容>
    <回避策>
    <原因特定の調査について>


    <障害内容>
    ノードを再起動させた際に、イベント ログに以下のエラーが記録され、クラスター サービスの起動に失敗する。

    -------------------------------
    ログの名前:         System
    ソース:           Service Control Manager
    イベント ID:       7024
    レベル:           エラー
    説明:
    Cluster Service サービスは、サービス固有エラー ログ サービスで、無効なログ ブロックが見つかりました。 で終了しました。
    -------------------------------

    また、クラスター ログには以下のエラー ログが記録されます。

    ---------------
    ERR   [CS] Service CreateNodeThread Failed, ERROR_LOG_BLOCK_INVALID(6609)' because of '::CreateLogFile( fileName.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, sa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL )'
    ---------------

    上記ログに記録された [無効なログ ブロックが見つかりました。] と [ERROR_LOG_BLOCK_INVALID(6609)'] は、クラスター サービスが使用するファイルの一部である clusdb.blf というファイルが破損している場合に発生することが確認されています。
    クラスターは起動時にこのファイルを読み込みますが、ファイルが破損していると正しく内容を読み込めず、サービスの起動に失敗します。

    - クラスタ ログはどこ?
    http://blogs.technet.com/b/askcorejp/archive/2009/04/21/windows-server-2008-failover-clustering.aspx

    <回避策>
    本ファイルは、削除またはリネームすることで Cluster Service 起動時に自動的に再作成されます。
    万が一上記の問題が発生した場合には、以下の手順にて clusdb.blf ファイルを再作成し、Cluster Service が正常に起動するかどうかご確認ください。

    1. c:\windows\cluster\clusdb.blf を clusdb.old などの名前にリネームします。
    2. [サービス] 管理コンソールや net start clussvc コマンドを利用して、Cluster Service を起動します。

    上記ファイルを再作成する事でのシステム影響はございません。

    <原因特定の調査について>
    ファイル破損の原因は、その破損の瞬間を捉えた詳細調査が必要となり、
    明確な判断は往々にして困難です。しかし、論理的には以下の要因が挙げられます。

    A. ディスク関連の障害
    B. ウイルス対策ソフトウェアがファイルへアクセスした場合

    それぞれの詳細は以下の通りです。

    -----------
    A. ディスク関連の障害
    -----------
    イベント ログに NTFS 関連のエラーやディスク関連のエラーが記録されている場合には、ディスク関連の障害でファイルが破損した可能性もございます。
    なお、NTFS のエラーは、通常 ID:55 などが記録されます。
    これらエラーが記録されていた場合には、ハードウェアベンダー様へハードウェアのチェックの依頼をお願いします。

    -ソース : NTFS、ID: 55 のイベント
    http://blogs.technet.com/b/askcorejp/archive/2013/03/11/ntfs-id-55.aspx

    ------------------
    B. ウイルス対策ソフトウェアがファイルへアクセスした場合
    ----------
    ウイルス対策ソフトウェアがファイルへアクセスした際に、クラスターサービスによる同ファイルへの適切なアクセスが妨害され、これにより、ファイルのデータが不正な状態に陥った可能性も考えられます。
    弊社では Windows Server 2008 のフェールオーバー クラスタ (WSFC) 環境において、ウイルス対策ソフトウェアのスキャンの対象から除外すべきフォルダーを以下の Blog で公開しております。
    この除外対象のフォルダには、今回問題の発生したファイル clusdb.blf の配置されている %systemroot%\Cluster も含まれております。
    そのため、もし除外対象になっていない場合には、切り分けと安定運用のために、除外の設定をお願いいたします。

    クラスタ環境でのウィルス スキャンの除外設定について
    http://blogs.technet.com/b/askcorejp/archive/2010/06/10/wsfc.aspx

    アンチウイルス スキャン対象から除外したいファイルやフォルダ
    http://blogs.technet.com/b/jpepscrt/archive/2010/04/28/3328757.aspx

    本 Blog が少しでも皆様のお役に立てれば幸いです。

  • エクスプローラーで全ファイルを選択したときのファイル合計サイズとディスクのプロパティの使用領域との差異は何故おきるのか?

    こんにちは。Windows プラットフォーム サポートの加藤です。
    本日はよくお問い合わせをいただく、エクスプローラーで確認した時のファイルサイズの合計とディスクのプロパティの使用領域に差異が発生する現象についてご紹介します。

    <差異が発生する主な原因について>
    差異が発生する原因は様々ですが、ファイル システムが正常である場合、常に正しいサイズを表示しているのはディスクのプロパティの使用領域です。
    一般的にエクスプローラーで全ファイルを選択した場合のサイズは、ディスクのプロパティの使用領域よりも少なくなります。
    これは、エクスプローラーの既定では隠し属性やシステム属性のフォルダ、ファイルは表示されないため、全選択を実施しても実際には選択されないために差異が発生します。
    この問題はエクスプローラーの表示オプションを変更することで回避可能です。

    また、サイズを確認したユーザーのアクセス許可がないフォルダ、ファイルが存在していると、これらフォルダ、ファイルはエクスプローラーからサイズが取得できないため、この場合にも差異が発生します。
    一般的に多く報告されているのは、以下の 3 つのフォルダです。

    1. ごみ箱
    2. WER (Windows Error Reporting) の保存先フォルダ
    3. System Volume Information フォルダ (Volume ShadowCopy Service で作成されるシャドウ コピーが保存されます。)

    他のユーザーのごみ箱には、アクセス許可がないため、サイズを取得することができません。
    WER の保存先フォルダは、設定によって変更可能ですが、保存先のフォルダにアクセス許可がない場合には、サイズを取得することができません。
    System Volume Information フォルダは、一般ユーザーにはアクセス許可がないため、サイズを取得することができません。

    <対処策について>
    隠し属性やシステム属性のフォルダ、ファイルの対処方法は、エクスプローラーの以下の表示オプションを変更することで回避可能です。

    --------------
    [ファイルとフォルダーの表示] -  [隠しファイル、隠しフォルダ―、および隠しドライブを表示する] or [すべてのファイルとフォルダを表示する] を選択。
    [保護されたオペレーティング システム ファイルを表示しない] のチェックを外す。
    --------------

    アクセス許可がないフォルダのうちごみ箱と WER 関しては、[ディスクのクリーンアップ] 機能でサイズの確認と削除が可能です。
    なお、[ディスクのクリーンアップ] 機能はクライアントには標準でインストールされていますが、サーバー OS の場合は、Windows Server 2008 以降は [デスクトップ エクスペリエンス] の機能を追加する必要があります。
    ※ 機能の追加手順は後述します。

    System Volume Information フォルダのシャドウ コピーのサイズを確認するためにはコマンド プロンプトで以下の vssadmin コマンドを実行します。

    vssadmin List ShadowStorage

    実行結果の [シャドウ コピーの記憶域の使用領域] が現在のシャドウ コピーのサイズです

    実行例
    C:\WINDOWS\system32>vssadmin List ShadowStorage vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンド ライン ツール
    (C) Copyright 2001-2013 Microsoft Corp.

    シャドウ コピーの記憶域関連付け
       ボリューム: (C:)\\?\Volume{f16b0aa0-f241-11e1-b33e-ac162d026d14}\
       シャドウ コピーの記憶域ボリューム: (C:)\\?\Volume{f16b0aa0-f241-11e1-b33e-ac162d026d14}\
       シャドウ コピーの記憶域の使用領域: 9.71 GB (1%)
       シャドウ コピーの記憶域の割り当て領域: 10.8 GB (2%)
       シャドウ コピーの記憶域の最大領域: 45.0 GB (9%)

    シャドウ コピーは vssadmin コマンドの Delete Shadows オプションで過去のバージョンを削除することが可能です。
    なお、シャドウ コピーは [共有フォルダのシャドウコピー] 機能以外でもバックアップソフトなどによって使用される場合もあるため、[共有フォルダのシャドウコピー] を使用していない環境でシャドウ コピーが作成されている場合には、そのシャドウ コピーの削除可否と削除方法についてバックアップソフトベンダー様に確認します。

    vssadmin コマンドから確認できる使用領域のサイズはシャドウ コピー機能で使用されているサイズです。例えば、ウィルス対策ソフト等などで System Volume Information フォルダに書き込みが行われている場合には正確なサイズを確認することができません。そのため一時的に System Volume Information のプロパティからアクセス許可を変更して確認することも検討します。

    - 参照資料
    System Volume Information フォルダへアクセスする方法
    http://support.microsoft.com/kb/309531/ja

    vssadmin コマンドでシャドウ コピーが削除できない場合の対処方法について
    http://blogs.technet.com/b/askcorejp/archive/2013/11/29/vssadmin.aspx


    -------------------------------------------------
    機能 [デスクトップ エクスペリエンス] の追加手順
    -------------------------------------------------
    [スタート] - [管理ツール] - [サーバー マネージャ] をクリックして
    サーバー マネージャーを起動します。左ペンインより [機能] をクリックして
    [機能の追加] のリンクより、機能の追加ウィザードを起動します。

    機能 [デスクトップ エクスペリエンス] 横のチェックボックスを選択し、
    [インストール] をクリックします。

      * 機能の追加後、再起動が必要です。

    本 Blog が少しでも皆様のお役に立てれば幸いです。

  • アプリケーション/プロセスは、既にアンロードされた ws2_32.dll を参照し、異常終了する場合があります。

    <Enlish follows Japanese>

     

    こんにちは。日本マイクロソフトの徐です。

     

    今回は、Windows 7  環境で動作するアプリケーション/プロセスが、既にアンロードされた ws2_32.dll を参照し、異常終了する場合がある問題についてご紹介します。

     

    現象について

    +++++++++++

    Windows 7  環境で動作するアプリケーション/プロセスが、既にアンロードされた ws2_32.dll を参照し、異常終了する場合があります。

     

    発生原因について

    +++++++++++++

    アプリケーション/プロセスにおいて、ロードする DLL モジュールの初期化処理 (DllMain 関数) の延長上で、API WSAStartup を呼び出す実装が含まれる場合、本現象が発生する可能性があります。
    DllMain 関数からAPI WSAStartup を呼び出す制限事項の詳細につきましては、以下技術情報をご参照ください。

    WSAStartup function
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx


    The WSAStartup function typically leads to protocol-specific helper DLLs being loaded. As a result, the WSAStartup function should not be called from the DllMain function in a application DLL. This can potentially cause deadlocks. For more information, please see the DLL Main Function

    http://go.microsoft.com/fwlink/p/?linkid=109533

     

    本事象は、DLLモジュールのDllMain 関数の実装による問題ですが、CEIP機能が動作することにより問題が顕在化します。

     

     

    解決方法について

    ++++++++++++++++

    恒久的な解決策としては、DllMain 関数の処理中にAPI WSAStartup を呼び出す DLL モジュールの製造元に���問い合わせください。

     

    DLL モジュールの製造元から恒久的な解決策を入手するまで、一時的な回避方法としては、カスタマー エクスペリエンス向上プログラム (Customer Experience Improvement Program, 以降 “CEIP” と表記) の無効化を行うことで、本現象を回避できる可能性があります。

     

    CEIP を無効化するには、以下のレジストリ値を設定します。

    レジストリキー:HKLM\Software\Microsoft\SQMClient\Windows\CEIPEnable
    値:0(無効)
    http://msdn.microsoft.com/en-us/library/dd405474(VS.85).aspx

     

     

    補足情報について

    ++++++++++++++++

    補足情報1:本現象が発生する条件(DllMain の実装問題が顕在化する条件) について

    本現象が発生する条件は、以下 2 つの CEIP に関わるレジストリキーの値が共に 1 に設定される場合です。

    HKLM\Software\Microsoft\SQMClient\Windows\CEIPEnable
    HKLM\SOFTWARE\Microsoft\SQMClient\Windows\CEIPSampledIn

    レジストリキー CEIPEnable は、CEIP 機能が有効するかどうかを制御するためのレジストリキーです。
    CEIPEnable の値が 1 に設定された場合、CEIP 機能は有効となります。
    EIPEnable の値が 0 に設定された場合、CEIP 機能は無効となります。

    レジストリキー CEIPSampledIn は、CEIP 機能を有効に設定した場合に、対象マシンから収集されたCEIP 情報をマイクロソフトへ送付するかどうかを制御するためのレジストリキーです。
    CEIPSampledIn の値が 1 に設定された場合、収集されたCEIP に関わる情報をマイクロソフトへ送付します。
    CEIPSampledIn の値が 0 に設定された場合、CEIP に関わる情報をマイクロソフトへ送付しません。


    補足資料2:レジストリキー  CEIPSampledIn の設定、及びその必要性について

    wsqmcons.exe と呼ばれるアプリケーションは、Windows 7  インストール時にタスク スケジューラに登録され、19  時間間隔で実行されます。
    本アプリケーションの実行時に、レジストリキー CEIPSampledIn が追加/変更される可能性があります。

           タスク スケジューラ ライブラリ -> Microsoft -> Windows -> Customer Experience Improvement Program -> Consolidator

    レジストリキー CEIPSampledIn の値は、基本的に以下の三つのレジストリキーにより決まります。
    そのうち、レジストリキー RacSampleNumber は、8  バイトの乱数を基に作成されます。

    HKLM\Software\Microsoft\SQMClient\Windows\CEIPSamplingRangeLow (既定値は 1)


    HKLM\Software\Microsoft\SQMClient\Windows\CEIPSamplingRangeHigh (既定値は 10,000,000)


    HKLM\Software\Microsoft\Reliability Analysis\RAC\RacSampleNumber (最大値は 0xFFFFFFFF = 4,294,967,295 までの乱数)

    上記 3 つのレジストリキーに対して、以下の条件を満たす場合には、CEIPSampledIn の値が 1 に設定されます。
    条件を満たさない場合には、CEIPSampledIn の値が 0 に設定されます。

           CEIPSamplingRangeLow の値 <= RacSampleNumber の値 <= CEIPSamplingRangeHigh の値

    上記のような実装を行う理由としては、CEIP 機能を有効に設定するマシンが膨大な数になる可能性があるためです。
    そのため、CEIP 情報のマイクロソフトへの送付を、サンプリングするように実装されます。

    すなわち、上記の条件を満たした場合(RacSampleNumber の値は 1 10,000,000 の範囲内である場合)のみ、該当マシンは CEIP のサンプリングの対象となり、CEIPSampledIn 1 に設定され、CEIP 情報をマイクロソフトへ送付します。

    RacSampleNumber の値が 1 10,000,000 の範囲外の場合には、該当マシンは CEIP のサンプリングの対象外となり、CEIPSampledIn 0 に設定され、CEIP 情報をマイクロソフトへ送付しません。

     

     

    本現象に関する日本語技術情報は、以下KB2979267をご参照ください。

     

    アプリケーション/プロセスは、既にアンロードされた ws2_32.dll を参照し、異常終了する場合があります。

    http://support2.microsoft.com/kb/2979267/ja

     

    カスタマ エクスペリエンス向上プログラム(CEIP)の詳細及びマイクロソフトへ送付されるCEIPレポートに含まれる情報の詳細につきましては、以下技術情報をご参照ください。

    Microsoft カスタマ エクスペリエンス向上プログラム
    http://www.microsoft.com/products/ceip/JA-JP/default.mspx


    Microsoft® カスタマ エクスペリエンス向上プログラムのプライバシーに関する声明
    http://www.microsoft.com/products/ceip/JA-JP/privacypolicy.mspx

     


     

     

    SYMPTOMS

    --------------------

    Application/Process crashes when referencing unloaded ws2_32.dll in Windows 7.

     

    CAUSE

    --------------------

    Application/Process crashes when API WSAStartup is called from initializing process (DllMain function) in an application DLL.

    For the limitations of calling API WSAStartup by DllMain function, visit the following Microsoft website:

     

    WSAStartup function

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx

     

    The WSAStartup function typically leads to protocol-specific helper DLLs being loaded. As a result, the WSAStartup function should not be called from the DllMain function in a application DLL. This can potentially cause deadlocks. For more information, please see the DLL Main Function(http://go.microsoft.com/fwlink/p/?linkid=109533).

     

    The root cause is the way of an implementation of DllMain function in an application DLL. However, this issue only occurs when CEIP is enabled.

     

    RESOLUTION

    --------------------

    To resolve this issue permanently, please contact the application vendor of an application DLL calling the DllMain function.

    However, you may disable Customer Experience Improvement Program (CEIP) by setting the following registry key as a temporary workaround before you get the permanent solution from application vender.

     

    KEYHKLM\Software\Microsoft\SQMClient\Windows\CEIPEnable

    VALUE0Disabled

    http://msdn.microsoft.com/en-us/library/dd405474(VS.85).aspx

     

     

    ADDIONAL INFORMATION

    --------------------------------

    Additional Information 1: The conditions of the issue occurs.

     

    This issue occurs when both of the following registry keys related to CEIP are set to 1.

     

    HKLM\Software\Microsoft\SQMClient\Windows\CEIPEnable

    HKLM\SOFTWARE\Microsoft\SQMClient\Windows\CEIPSampledIn

     

    CEIPEnable key is to enable or disable CEIP.

    CEIP is enabled when CEIPEnable key is set to 1.

    CEIP is disabled when CEIPEnable key is set to 0.

     

    CEIPSampledIn key is to decide to send CEIP information to Microsoft.

    CEIP information is sent when CEIPSampledIn is set to 1.

    CEIP information is not sent when CEIPSampledIn is set to 1.

     

     

    Additional Information 2: CEIPSampledIn key setting and the needs.

     

    wsqmcons.exe is run every 19 hours by task scheduler in Windows 7 by default.

    When wsqmcons.exe is run, CEIPSampledIn is possibly changed or added.

     

           Task Scheduler Library -> Microsoft -> Windows -> Customer Experience Improvement Program -> Consolidator

     

    The value of CEIPSampledIn is basically decided by the following three registry keys.

    RacSampleNumber key is created based on a 8 bytes random number.

     

    HKLM\Software\Microsoft\SQMClient\Windows\CEIPSamplingRangeLow (Default value is 1)

    HKLM\Software\Microsoft\SQMClient\Windows\CEIPSamplingRangeHigh (Default value is 10,000,000)

    HKLM\Software\Microsoft\Reliability Analysis\RAC\RacSampleNumber (Max value is a random number up to 0xFFFFFFFF = 4,294,967,295)

     

    CEIPSampledIn is set to 1 when the following condition is met or else CEIPSampledIn is set to 0.

           The value of CEIPSamplingRangeLow <= The value of RacSampleNumber <= The value of CEIPSamplingRangeHigh

     

    The systems enabled CEIP may become huge amount. Therefore, CEIP infomation is sampled by the above implementation. More specifically, only when the above condition is met (RacSampleNumber is between 1 and 10,000,000), the system's CEIP becomes a sampling target.

    Therefore CEIPSampledIn is set to 1 and CEIP infomation is sent to Microsoft. When RacSampleNumber is not between 1 and 10,000,000 the system's CEIP does not become a sampling target and CEIP information is not sent to Microsoft.

     

     

    For the information of Customer Experience Improvement Program (CEIP), visit the following Microsoft website:

     

    Microsoft Customer Experience Improvement Program http://www.microsoft.com/products/ceip/en-us/default.mspx

     

    Privacy Statement for the Microsoft® Customer Experience Improvement Program http://www.microsoft.com/products/ceip/en-us/privacypolicy.mspx