none
Windows8(デスクトップUI)+IE10の環境で、遅延ロードを行うActiveXロード時にIEがアプリケーションエラーとなる RRS feed

  • 質問

  • Window 8 Release Preview版で以下の現象が発生いたします。

    どなたか対応手段をご存知な方、いらっしゃいますか。

    以下の現象について問い合わせいたします。  

     

    1.現象発生状況:

        Windows8+IE10の環境において、遅延ロードを行うActiveXを含むhtmlをIEで表示しようと
        すると、ActiveXのロードに時間がかかり、ActiveXを正常にロードできないため、ActiveXの
        プロパティやメソッドの呼び出し結果が正しくありません。このとき、イベントログには
        IEでアプリケーションエラーが発生したイベントが記録されています。

        遅延ロードについては、ActiveXが直接遅延ロードを行わなくても、ActiveXがリンクしてい
        るDLLのどれか一つでも遅延ロードを行うDLLがあれば、同様にIEでアプリケーションエラー
        が発生したイベントが記録されます。

        Windows7+IE9の環境ではこの現象は発生しないため、Windows8もしくはIE10に原因があると
        思われますので、原因と対処方法についての調査をお願いいたします。

     

      2.現象発生環境:

        (1)OS:

                    - バージョン :Windows 8 Release Preview(64 ビット)
                    - プロダクトID(マイクロソフト版の場合のみ):00137-11009-99904-AA885

        (2)IE:

                 Internet Explorer 10 Release Preview 10.0.8400.0

                 7/11 15:28 時点での更新プログラムをインストール済み


        (3)コンピュータ:

                 HP(Pavilion v7880jp)

                   メモリー:4.00GB

                   CPU  :Intel(R) Core(TM) 2 Quad Q8200(2.33GHz)

     

      3.現象発生頻度:

        100%再現します(現象再現するテストプログラムもございますので、ご連絡ください)。

     

      4.現象発生時のイベントログ:

        レベル 日付と時刻 ソース イベント ID タスクのカテゴリ
        エラー 2012/07/13 10:35:02 Application Error 1000 (100) "

        障害が発生しているアプリケーション名: IEXPLORE.EXE、バージョン: 10.0.8400.0、タイム スタンプ: 0x4fb6ed03
        障害が発生しているモジュール名: KERNELBASE.dll、バージョン: 6.2.8400.0、タイム スタンプ: 0x4fb7184e
        例外コード: 0xc0000005
        障害オフセット: 0x0001e86d
        障害が発生しているプロセス ID: 0x1354
        障害が発生しているアプリケーションの開始時刻: 0x01cd6097b81f6353
        障害が発生しているアプリケーション パス: C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE
        障害が発生しているモジュール パス: C:\WINDOWS\SYSTEM32\KERNELBASE.dll
        レポート ID: f6e00e91-cc8a-11e1-9b7e-00248c5c60e1
        障害が発生しているパッケージの完全な名前:
        障害が発生しているパッケージに関連するアプリケーション ID: "

     

      5.現象再現手順(テストプログラムで再現可能ですので、ご連絡ください)
        -----------
       まず、正常動作を確認します。
       ①適当な場所(C:\test など)にファイルC(DelayLoad - AnmokuLink.ocx)をコピーします。
       ②RegServ.exe等を使用して、①のActiveXを登録します。(RegServ.exe等は「管理者として実行」します。)
       ③ファイルA(DelayLoadCtrl.htm)をダブルクリックして起動します。(Metro用ではなく、デスクトップ用
        Internet Explorerで起動してください。)
       ④画面下に「このWebページはスクリプトやActiveXコントロールを実行しないように制限されていま
        す。」が表示されたら[ブロックされているコンテンツを許可]ボタンをクリックします。
       ⑤イベントビューアーを起動します。Windows ログ-アプリケーションに、IEでアプリケーションエラー
        が発生したイベントが“登録されていない”ことを確認します。
       ⑥IEに表示されている[Version]ボタンをクリックします。「Version=[1.00]」と表示されます。

       次に異常動作(今回の問合せの現象)を確認します。
       ⑦①と同じ場所(C:\test など)にファイルB(DelayLoad - DelayLoad.ocx)をコピーします。
       ⑧RegServ.exe等を使用して、⑦のActiveXを登録します。(RegServ.exe等は「管理者として実行」します。)
       ⑨ファイルA(DelayLoadCtrl.htm)をダブルクリックして起動します。(Metro用ではなく、デスクトップ用
        Internet Explorerで起動してください。)
       ⑩画面下に「このWebページはスクリプトやActiveXコントロールを実行しないように制限されていま
        す。」が表示されたら[ブロックされているコンテンツを許可]ボタンをクリックします。
       ⑪イベントビューアーを起動します。Windows ログ-アプリケーションに、IEでアプリケーションエラー
        が発生したイベントが“登録されている”ことを確認します。
       ⑫IEに表示されている[Version]ボタンをクリックします。「Version=[undefined]」と表示されます。

       ファイルBとCの違いは、遅延ロードを使用しているかいないかの違いです。

       ■ 使用データファイル ■
       A.テスト用html(DelayLoadCtrl.htm)
       B.異常動作確認用ActiveX(DelayLoad - DelayLoad.ocx)
       C.正常動作確認用ActiveX(DelayLoad - AnmokuLink.ocx)

     

      以上、よろしくお願いいたします。

    2012年7月19日 7:52

すべての返信

    • 回答としてマーク 星 睦美 2012年7月25日 6:46
    • 回答としてマークされていない 星 睦美 2012年8月1日 5:41
    2012年7月20日 23:02
  • 「4.現象発生時のイベントログ:」に記載されている情報から、「障害オフセット: 0x0001e86d」は下記ルーチンの中かも。。。

    KERNELBASE!StrCmpICA

    もしかしたら DelayLoad.ocx と AnmokuLink.ocx で、文字列関連処理に違いがあるのでは?
    (直接的に文字列をいぢっていなくても、間接的に文字列操作に差異が生じるような実装になっているとか。)

    あと、比較対象として挙げられている「Windows7+IE9」の環境は 64 ビット環境なんですよね?

    2012年7月23日 11:16
  • フォーラム オペレーターの星 睦美です。

    Jitta さん、お馬鹿 さん 回答ありがとうございます。

    今回の質問は以下のフォーラムで回答がありましたので、こちらの質問にリンクさせていただきます。

    ・Internet Explorer -Windows8(デスクトップUI)+IE10の環境で、遅延ロードを行うActiveXロード時にIEがアプリケーションエラーとなる:
    http://social.msdn.microsoft.com/Forums/ja-JP/internetexplorerja/thread/165339cd-0fbe-4d89-9a7f-bccf6d87b77e


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2012年7月25日 7:00
  • ご返答いただきありがとうございます。

    ご返答内のご質問につきまして、以下に回答いたします。

    ①文字列関連処理に違いがあるのでは?
      →DelayLoad.ocx と AnmokuLink.ocxはソースは同じで、DLLのリンクの方法だけが違います。
        そのため、文字列関連処理に違いが生じることはありません。

    ②比較対象として挙げられている「Windows7+IE9」の環境は 64 ビット環境なんですよね?
      →はい、64ビット環境です。(Windows 7 Professional Service Pack 1 64ビット)

    以上、よろしくお願いいたします。

    2012年7月25日 8:18
  • この質問、ちょっと面白そうだったので、少しだけ調べてみました。

    Hyper-V 上の Windows 8 RP x64 環境に WinDBG をカーネル デバッグ モードで接続し、32 プロセス内の下記アドレスにブレーク ポイントをセットして、32 ビット iexplorer プロセスからこの場所にヒットしたタイミングで意図的にアプリケーション エラーを発生させたところ、Noriyuki Mitsuyasu さんと全く同じアプリケーション エラーが記録されました。

    ---------------------------------------------
    <クラッシュさせた場所>
    KERNELBASE!StrCmpICA+0xd:
    00000000`7633e86d 0fbe0e          movsx   ecx,byte ptr [esi]

    <イベント ログに記録されていたアプリケーション エラー>
    障害が発生しているアプリケーション名: IEXPLORE.EXE、バージョン: 10.0.8400.0、タイム スタンプ: 0x4fb6ed03
    障害が発生しているモジュール名: KERNELBASE.dll、バージョン: 6.2.8400.0、タイム スタンプ: 0x4fb7184e
    例外コード: 0xc0000005
    障害オフセット: 0x0001e86d
    障害が発生しているプロセス ID: 0x5f0
    障害が発生しているアプリケーションの開始時刻: 0x01cd6b049f43e7d4
    障害が発生しているアプリケーション パス: C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE
    障害が発生しているモジュール パス: C:\Windows\SYSTEM32\KERNELBASE.dll
    レポート ID: 8327474f-d70b-11e1-9b6a-00155d7f1f19
    障害が発生しているパッケージの完全な名前:
    ---------------------------------------------

    なのでご質問されている問題現象は、やはり KERNELBASE!StrCmpICA モジュール内での文字列操作に起因して発生していると思われます。

    32 ビット iexplorer プロセスから上記 <クラッシュさせた場所> に示したアドレスへの呼び出しは、かなりの回数で発生しました。
    以下は、そのときに採取したスタック情報の一部です。
    (全呼び出しのスタック情報は膨大になってしまうので、ホントに一部の抜粋です。)

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    00000000`76320000 00000000`763c5000   KERNELBASE   (pdb symbols)          KERNELBASE.dll
    ----------------------------------------------------------------------------
     # ChildEBP          RetAddr           Args to Child                                        
    00 0070f610 710a158c 710a1438 71561c70 00000000 KERNELBASE!StrCmpICA (FPO: [Non-Fpo])
    01 0070f65c 710f7088 71577680 71565690 00000004 IEFRAME!__delayLoadHelper2+0x1ac (FPO: [Non-Fpo])
    02 0070f7c0 00391176 00a893f8 0000000a 00000001 IEFRAME!_tailMerge_IEShims_dll+0xd
    03 0070fa50 0039125a 00390000 00000000 00a80b4c IEXPLORE!wWinMain+0x1d0 (FPO: [Non-Fpo])
    04 0070fae0 761883db 7f95e000 0070fb30 778f9a3f IEXPLORE!_initterm_e+0x17c (FPO: [Non-Fpo])
    05 0070faec 778f9a3f 7f95e000 ca52573e 00000000 KERNEL32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
    06 0070fb30 778f9a12 00391c32 7f95e000 ffffffff ntdll_778a0000!__RtlUserThreadStart+0x72 (FPO: [Non-Fpo])
    07 0070fb48 00000000 00391c32 7f95e000 00000000 ntdll_778a0000!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])
    00000000`710a1438  "wininet.dll"
    00000000`71561c70  "IEShims.dll"
    ----------------------------------------------------------------------------
     # ChildEBP          RetAddr           Args to Child                                        
    00 0070f45c 710634d9 0070f4f8 7107173c 00a8f4bc KERNELBASE!StrCmpICA+0xd (FPO: [Non-Fpo])
    01 0070f480 7106bb94 00a93e20 0070f4f8 00000a10 IEShims!CShimBindings::_GetAvailableShims+0x44 (FPO: [Non-Fpo])
    02 0070f60c 7106b9f0 00a93e20 00000a10 00000000 IEShims!CShimBindings::_InferRefactoredShims+0x6b (FPO: [Non-Fpo])
    03 0070f634 71072306 00000180 00000a10 00000000 IEShims!CShimBindings::_InitializeShims+0x94 (FPO: [Non-Fpo])
    04 0070f64c 71072289 71070448 00000a10 00000000 IEShims!CShimBindings::Initialize+0x35 (FPO: [Non-Fpo])
    05 0070f670 711db4ad 00000002 00000000 710e1276 IEShims!IEShims_Initialize+0xaf (FPO: [1,1,4])
    06 0070f67c 710e1276 00a893f8 00000001 00000000 IEFRAME!AttachShims+0x28 (FPO: [0,0,4])
    07 0070f7c0 00391176 00a893f8 0000000a 00000001 IEFRAME!LCIEStartAsTabProcess+0x16d (FPO: [Non-Fpo])
    08 0070fa50 0039125a 00390000 00000000 00a80b4c IEXPLORE!wWinMain+0x1d0 (FPO: [Non-Fpo])
    09 0070fae0 761883db 7f95e000 0070fb30 778f9a3f IEXPLORE!_initterm_e+0x17c (FPO: [Non-Fpo])
    0a 0070faec 778f9a3f 7f95e000 ca52573e 00000000 KERNEL32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
    0b 0070fb30 778f9a12 00391c32 7f95e000 ffffffff ntdll_778a0000!__RtlUserThreadStart+0x72 (FPO: [Non-Fpo])
    0c 0070fb48 00000000 00391c32 7f95e000 00000000 ntdll_778a0000!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])
    eax=00000000 ebx=00000010 ecx=00000010 edx=710702c8 esi=0070f4f8 edi=7107173c
    eip=7633e86d esp=0070f454 ebp=0070f45c iopl=0         nv up ei pl nz na po nc
    cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
    KERNELBASE!StrCmpICA+0xd:
    00000000`0070f4f8  "IEXPLORE.EXE"
    00000000`7107173c  "USER32.dll"
    00000000`7633e86d 0fbe0e          movsx   ecx,byte ptr [esi] ds:002b:0070f4f8=??
    ----------------------------------------------------------------------------
     # ChildEBP          RetAddr           Args to Child                                        
    00 0070f46c 710637a4 7106db10 7623a44a 00000a10 KERNELBASE!StrCmpICA+0xd (FPO: [Non-Fpo])
    01 0070f488 7106baf0 00a8f408 7623a44a 00a8f4bc IEShims!_GetHookApiByName+0x25 (FPO: [Non-Fpo])
    02 0070f60c 7106b9f0 00a93e20 00000a10 00000000 IEShims!CShimBindings::_InferRefactoredShims+0x198 (FPO: [Non-Fpo])
    03 0070f634 71072306 00000180 00000a10 00000000 IEShims!CShimBindings::_InitializeShims+0x94 (FPO: [Non-Fpo])
    04 0070f64c 71072289 71070448 00000a10 00000000 IEShims!CShimBindings::Initialize+0x35 (FPO: [Non-Fpo])
    05 0070f670 711db4ad 00000002 00000000 710e1276 IEShims!IEShims_Initialize+0xaf (FPO: [1,1,4])
    06 0070f67c 710e1276 00a893f8 00000001 00000000 IEFRAME!AttachShims+0x28 (FPO: [0,0,4])
    07 0070f7c0 00391176 00a893f8 0000000a 00000001 IEFRAME!LCIEStartAsTabProcess+0x16d (FPO: [Non-Fpo])
    08 0070fa50 0039125a 00390000 00000000 00a80b4c IEXPLORE!wWinMain+0x1d0 (FPO: [Non-Fpo])
    09 0070fae0 761883db 7f95e000 0070fb30 778f9a3f IEXPLORE!_initterm_e+0x17c (FPO: [Non-Fpo])
    0a 0070faec 778f9a3f 7f95e000 ca52573e 00000000 KERNEL32!BaseThreadInitThunk+0xe (FPO: [Non-Fpo])
    0b 0070fb30 778f9a12 00391c32 7f95e000 ffffffff ntdll_778a0000!__RtlUserThreadStart+0x72 (FPO: [Non-Fpo])
    0c 0070fb48 00000000 00391c32 7f95e000 00000000 ntdll_778a0000!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])
    eax=00816ea8 ebx=0000000d ecx=fffffff1 edx=00000072 esi=7106db10 edi=7623a44a
    eip=7633e86d esp=0070f464 ebp=0070f46c iopl=0         nv up ei ng nz na po cy
    cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000283
    KERNELBASE!StrCmpICA+0xd:
    00000000`7633e86d 0fbe0e          movsx   ecx,byte ptr [esi] ds:002b:7106db10=??
    00000000`7106db10  "CreateHardLinkW"
    00000000`7623a44a  "RtlUnwind"
    KERNELBASE!StrCmpICA+0xd:
    00000000`7633e86d 0fbe0e          movsx   ecx,byte ptr [esi]
    ----------------------------------------------------------------------------
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    上記に示したコール スタックを見ると、IEShims.dll は遅延ロードになっているようで、そのロード処理の際に KERNELBASE!StrCmpICA ルーチンが呼び出されているように見えます。
    推測ですが、Noriyuki Mitsuyasu さんの問題は、このタイミングでの処理でエラーが発生している可能性が考えられると思います。

    KERNELBASE!StrCmpICA ルーチン内でのエラーが、OS あるいは Noriyuki Mitsuyasu さん側のどちらにあるのかは分かりませんが、WinDBG を使ってデバッグする根性さえあれば、MS のサポートに頼らなくても、原因自体は自力で究明することが可能だと思います。
    IE や ActiveX に関しては全くの無知の私でもここまではすぐに辿り着けたので、その分野の知識に明るい方がデバッグすれば、あっという間に原因究明できそうな気がしてます。
    (もちろん「その分野の知識に暗い」私には、これ以上の解析は無理です。。。)

    もっとも原因が究明できたとしても、この問題を解決出来るかは別問題ですが。。。
    (結局「MS 側の Bug!!」というオチになる可能性もあると思うので。)

    2012年7月26日 12:11
  • 現象について調査していただきありがとうございます。

    当方でも調査を進めておりますが、まだ対応方法が見つからない状況です。

    以上、よろしくお願いいたします。

    2012年7月30日 9:23