2009-12-08

某掲示板で書かれていたので、一言

これ3.6 beta 5で直してある。たぶん、IMEで入力している最中にキャレット表示しようとして落ちる。キャレット表示の際に選択文字列(IMEの変換文字列だったような)を取りに行くんだけど、それが取れなくなるから。多分何かのページ推移が重なってる(or 変換文字列がキャンセルされたとか)んじゃないかなと思うけど、再現する方法わからなかった。

849 名無しさん@お腹いっぱい。 [sage] 2009/12/07(月) 18:22:13  ID:dweTbE/00 Be:
上の方じゃ荒らしの標的にされてるし
全然問題のない人にとってこの話題がうざいのはわかる

同じ症状で悩んでる人の参考となるように
自分の例を晒してみただけなんで見逃してくださいな

>>838
送ってるよー
新プロファイルにしてからのクラッシュシグネチャは全部
nsQueryContentEventHandler::GenerateFlatTextContent(nsIRange*, nsString&)

再現性がないからバグレポート送れないのが辛い

>>842
自分の場合3.0では同じ拡張でも安定していたのが
3.5になってから頻繁に落ちるようになった

>>830の他、プラグインはMozillaデフォルト、
Flash 10.0 r32とJava SE 6 U17だけであとは無効にしてる 

3.5で起きる原因は、そこのコード3.5からだから。3.5ツリーもapprove request取ろうかな、やっぱり。某先生も引っかかってるらしいし。

ちなみに、これはcrashkillの流れで直したもののひとつ。コメントから見る限りCJKな人だらけっぽいから、IMEがらみ(IME使わないと通らないような場所)の話みたいだけどね。

だから、再現方法がわからなくても、クラッシュネタの場合は、クラッシュレポーターで送ってください。TOP100に入るようなものであれば、見てるから。

補足(2009/12/22)

1.9.1.8へのapproveをもらったから、Firefox 3.5.8でも直ります。

2 件のコメント:

Masayuki さんのコメント...

クラッシュ自体、作り込んでしまったのは私なんですが、クラッシュの理由がよく分からないですね。

クラッシュしてるケースでは必ず、OnQuerySeletedText()から呼び出されているので、コンテンツの最初の選択範囲を示すDOMRangeになぜか、適切なノードが設定されていない、ということになります。

これは拡張やWebアプリケーションが同じように選択範囲にアクセスする場合にもこの不正なDOMRangeを取得できてしまうことを意味するので、もし、これの生成もとがFx/Gecko側にあるのであれば修正しなくてはいけないのですが……

Makoto さんのコメント...

レポーターのログを見る限り、TwitterのLoginだとかgmailだとかで発生してるケースが多いので、動的なコンテンツで発生してる状況が多いかなと思ってます。

不正なDOMRangeというよりは、もう選択範囲が存在しないとかじゃないかなぁって考えてて、コメントからすると、動的にHTMLが書き変わっている状況かページ推移が発生してんじゃないかなぁって。

なので、今回は簡単なnullチェックで大丈夫という感じすかね。Root causeが細かくわからないけど、Debug Buildにすれば、コンソールにはエラーがでるから、まだ調査は可能だけど

こういう時こそ、rocとかが最近プッシュしてるVMWareを使ったReply debuggingが使えれば、もう少しなんかわかる気がしますけど