読者です 読者をやめる 読者になる 読者になる

ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

window.postMessage メソッドにより発生した message イベントを document.createEventObject の引数に渡すと一部の Internet Explorer 8 がクラッシュする件

Internet Explorer

あまり Internet Explorer を使っていなかったので知らなかったのですが、Internet Explorer 8 を使っていると、以下のようなメッセージが表示されて強制的に web ページを閉じられることがしばしばあるようですね。

お使いのコンピューターを保護するため Internet Explorer はこの Web ページを閉じました。


正しく機能しないアドオンまたは悪意のあるアドオンが存在するため、Internet Explorer はこの Web ページを閉じました。
詳細情報
Windows データ実行防止機能によって、システム メモリを不正に使用しようとしたアドオンが検出されました。正しく機能しないアドオンや悪意のあるアドオンである可能性があります。

Web 上で調べてみると、「『システムメモリを不正に使用しようとしたアドオンが検出された』 と書かれているけど、有効なアドオンは 1 つも無いし、何が原因なのかわからない」 というような話がいくつかありました。 私の手元の Windows 7 + Internet Explorer 8 でもこの問題が発生したので、原因を調べてみました。

原因

メッセージには 「アドオン」 と書かれていますが、原因としては web ページ上の JavaScript にあることもあるようです。 私が調べたところ、以下のことを行うことでこの問題が発生するということがわかりました。

IE が停止するときには、『Internet Explorer は動作を停止しました』 というメッセージウィンドウが表示され、詳細情報としては以下のものが表示されました。

問題の署名:
  問題イベント名:	BEX
  アプリケーション名:	iexplore.exe
  アプリケーションのバージョン:	8.0.7600.16385
  アプリケーションのタイムスタンプ:	4a5bc69e
  障害モジュールの名前:	StackHash_0a9e
  障害モジュールのバージョン:	0.0.0.0
  障害モジュールのタイムスタンプ:	00000000
  例外オフセット:	ff7fce00
  例外コード:	c0000005
  例外データ:	00000008
  OS バージョン:	6.1.7600.2.0.0.768.3
  ロケール ID:	1041
  追加情報 1:	0a9e
  追加情報 2:	0a9e372d3b4ad19135b953a78882e789
  追加情報 3:	0a9e
  追加情報 4:	0a9e372d3b4ad19135b953a78882e789

オンラインのプライバシーに関する声明をお読みください:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0411

オンラインのプライバシーに関する声明が利用できない場合は、プライバシーに関する声明をオフラインでお読みください:
  C:\Windows\system32\ja-JP\erofflps.txt

IE のバージョンとしては、8.0.7600.16385 において確認できました (64-bit 版の IE でも 32-bit 版の IE でも)。 また、バージョン 8.0.7601.17514 では発生しませんでした。

サンプル

この問題が発生するようなサンプルを用意しました。 問題発生の確認に使用できると思いますのでおいておきます。 IE 8 でのみ動作を確認しています。