Bug-org 892539 Assertion failure: modifierKey->keyCode == keyCode
初回投稿日時: 2013年08月31日13時01分45秒
カテゴリ: Events Mac Mozilla Core Mozilla26 バグ修正
SNS:
Tweet (list)
デバッグビルドでのみ、Commandキーや、Controlキーを押した際に、希にクラッシュすることがある、というバグです。
Macのモディファイアフラグには、デバイス依存フラグと、デバイス非依存フラグがあり、通常のキーイベントであれば、双方に適切なフラグが設定されています。デバイス非依存フラグを検査しないと、キーコード不明な状況で、モディファイアフラグのみが変更された場合に、生成すべきモディファイアキーのkeydown
イベントと、keyup
イベントの左右の違いが、デバイス非依存フラグだけでは分からないので、通常のモディファイアキーイベントが発生した場合に、左右の区別がつく、ネイティブキーコード値と、同じく、左右の区別がつくものの、ドキュメントが存在しない(OS内部使用のための)デバイス依存フラグの関連を保存しています。
このクラッシュは、既に保存していた関係と、新たに発生した通常のモディファイアキーイベントの情報とに違いが発生した場合に発生していました。
結局、相当な時間、テストしてみたものの、そのような状況は再現できず、この狂いが何故発生しているのか、その原因は分からないままです。そのため、狂いが生じた際には、デバッグビルドでもクラッシュさせず、保存してあるキーコードと、デバイス依存フラグの関係を全て破棄して、記録しなおすように修正しました。
元々、この保存情報が必要になることはほとんど無く、レアケースへの対応なので、万が一、情報が無い際に、キーコード不明なモディファイアフラグ変更が発生しても、KeyboardEvent.location
の値が狂う(右側のキーを押した場合に、DOM_KEY_LOCATION_LEFT
が返される)だけなので、現実的には問題は発生しないと思います。