none
IE8でMemory Unallocatedが発生する

    質問

  • お世話になっております。

    IE8でUnallocated addressとなり、クラッシュする。

    原因を調査しているが判らない為、WEBを参照していたところ、以下記事を見つけた。

    https://msdn.microsoft.com/ja-jp/library/dd361842(v=vs.85).aspx

    内容の詳細が判らない為、教えて頂きたいのですが、上記記事の内容は、IE8にてMemory Unallocatedとなるとの記載があるが、

    正しいでしょうか。

    ※今回の事象と関係があるかは別として、IE8でMemory Unallocatedとなる事象が既知の事象としてあるのかをまずは知りたいです。

    2017年6月22日 6:06

回答

  • "Memory Unallocated" が発生する可能性は、IE8 に限らず全てのアプリケーションであります。
    セキュリティ対策ソフトや各種ユーティリティ ソフトには、任意のアプリケーションのプロセスにカスタム DLL をインジェクションするものが多数あります。
    つまり IE などのブラウザ ソフトにカスタム DLL をインジェクションするのは、プラグインだけとは限らないのです。
    で、インジェクションされた DLL にバグがあったり、あるいは複数の 3rd ベンダー製カスタム DLL が混在しそれらの整合性に問題がある場合、"Memory Unallocated" 等の様々なエラーを引き起こすことがあります。
    なので、IE8 のバグであるかを疑うのであれば、まずは一切の 3rd ベンダー製カスタム DLL を排除した純粋な IE8 プロセスの状態で起きるのかを、検証する必要があると思います。
    IE8 プロセスにどのような 3rd ベンダー製カスタム DLL がインジェクションされているかは、"Process Explorer" 等のツールか、あるいはデバッガから IE8 プロセスにアタッチし、そのユーザー モード空間内にロードされている DLL を確認すれば、判断できます。
    (ちなみに、"クリーン ブート" は必ずしもすべての 3rd ベンダー製カスタム DLL を排除できるわけではない。)

    2017年6月22日 9:23

すべての返信

  • ご覧になった「Circular Memory Leak Mitigation」は IE7 で発生していた DOM オブジェクトの循環参照時のメモリ リークを緩和したよ、という内容です。

    Microsoft からのサポートが終了している IE8 の面倒を見なければいけないのはご愁傷さまですが、

    • クラッシュする操作の条件を切り分ける
    • アドオン無しやクリーンブートでの再現性を確認する
    •  クラッシュ ダンプを採取して解析する

    など地道にやるしかないでしょう。


    hebikuzure

    2017年6月22日 7:34
    モデレータ
  • "Memory Unallocated" が発生する可能性は、IE8 に限らず全てのアプリケーションであります。
    セキュリティ対策ソフトや各種ユーティリティ ソフトには、任意のアプリケーションのプロセスにカスタム DLL をインジェクションするものが多数あります。
    つまり IE などのブラウザ ソフトにカスタム DLL をインジェクションするのは、プラグインだけとは限らないのです。
    で、インジェクションされた DLL にバグがあったり、あるいは複数の 3rd ベンダー製カスタム DLL が混在しそれらの整合性に問題がある場合、"Memory Unallocated" 等の様々なエラーを引き起こすことがあります。
    なので、IE8 のバグであるかを疑うのであれば、まずは一切の 3rd ベンダー製カスタム DLL を排除した純粋な IE8 プロセスの状態で起きるのかを、検証する必要があると思います。
    IE8 プロセスにどのような 3rd ベンダー製カスタム DLL がインジェクションされているかは、"Process Explorer" 等のツールか、あるいはデバッガから IE8 プロセスにアタッチし、そのユーザー モード空間内にロードされている DLL を確認すれば、判断できます。
    (ちなみに、"クリーン ブート" は必ずしもすべての 3rd ベンダー製カスタム DLL を排除できるわけではない。)

    2017年6月22日 9:23
  • もうちょっと補足すると、

    IE7では循環参照により本来解放されていて参照できないはずのメモリを参照することができるパターンが存在していました。IE8では循環参照の解析を強化し正しくメモリ解放するように変更した。これにより本来参照できないはずのメモリは正しく参照できなくなった。ただし、IE7の挙動に依存して不正なメモリ参照を行っていたプログラムはIE8ではメモリ参照エラーを引き起こします。

    というものです。

    ちなみに、HTML / JavaScriptで参照している限りは正しいメモリ参照ですのでこの問題は発生しません。お馬鹿さんが指摘されていますが、アドオンなど外部DLLが不正なメモリ参照をしている場合に発生する問題です。

    ※今回の事象と関係があるかは別として、IE8でMemory Unallocatedとなる事象が既知の事象としてあるのかをまずは知りたいです。

    それを知ってどうするのでしょうか? Hebikuzure aka Murachi Akiraさんやお馬鹿さんも言及されていますが、質問者さんが遭遇した現象から目を背けても何も得るものはないかと。

    2017年6月22日 22:16
  • nbosamohan さん、こんにちは
    フォーラム オペレーターの立花楓です。

    Hebikuzure aka Murachi Akira さん、佐祐理 さん、お馬鹿 さんから情報をお寄せいただいておりますので、
    何か進展がございましたらご返信いただけますと幸いです。

    よろしくお願いします。


    MSDN/TechNet Community Support 立花楓

    2017年6月23日 4:51
    モデレータ
  • 皆様

    複数のご回答ありがとうございます。当方が至らないばかりにいろいろと

    ご迷惑をお掛けした部分もあり、申し訳ございません。

    仰られる通り、現在発生している事象から目をそむけても意味がないので、頂いた

    以下内容を試してみようと思います。

    ・クラッシュする操作の条件を切り分ける
    ・アドオン無しやクリーンブートでの再現性を確認する
    ・クラッシュ ダンプを採取して解析する

    2017年6月28日 10:29