この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2013年8月)

2013年8月31日

Bug-org 892539 Assertion failure: modifierKey->keyCode == keyCode
初回投稿日時: 2013年08月31日13時01分45秒
カテゴリ: Events Mac Mozilla Core Mozilla26 バグ修正
SNS: (list)

デバッグビルドでのみ、Commandキーや、Controlキーを押した際に、希にクラッシュすることがある、というバグです。

Macのモディファイアフラグには、デバイス依存フラグと、デバイス非依存フラグがあり、通常のキーイベントであれば、双方に適切なフラグが設定されています。デバイス非依存フラグを検査しないと、キーコード不明な状況で、モディファイアフラグのみが変更された場合に、生成すべきモディファイアキーのkeydownイベントと、keyupイベントの左右の違いが、デバイス非依存フラグだけでは分からないので、通常のモディファイアキーイベントが発生した場合に、左右の区別がつく、ネイティブキーコード値と、同じく、左右の区別がつくものの、ドキュメントが存在しない(OS内部使用のための)デバイス依存フラグの関連を保存しています。

このクラッシュは、既に保存していた関係と、新たに発生した通常のモディファイアキーイベントの情報とに違いが発生した場合に発生していました。

結局、相当な時間、テストしてみたものの、そのような状況は再現できず、この狂いが何故発生しているのか、その原因は分からないままです。そのため、狂いが生じた際には、デバッグビルドでもクラッシュさせず、保存してあるキーコードと、デバイス依存フラグの関係を全て破棄して、記録しなおすように修正しました。

元々、この保存情報が必要になることはほとんど無く、レアケースへの対応なので、万が一、情報が無い際に、キーコード不明なモディファイアフラグ変更が発生しても、KeyboardEvent.locationの値が狂う(右側のキーを押した場合に、DOM_KEY_LOCATION_LEFTが返される)だけなので、現実的には問題は発生しないと思います。

関連するかもしれないエントリ

bug-org 892539を含むエントリ