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

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

もずはっく日記(2016年1月)

2016年1月30日

Bug-org 1237582 [TSF][e10s] Browser hangs after bug1234422 with (hidden) Microsoft New Changjie or New Quick
初回投稿日時: 2016年01月30日22時11分03秒
カテゴリ: e10s IME Mozilla Core Mozilla45 TSF Windows バグ修正
SNS: (list)

繁体中国語(台湾・香港)用に以前はあった、MS New ChangJieと、MS New QuickというTIPが、Windows 10でもレジストリを先にいじっておくと、言語の追加で選択可能になるそうなのですが、これをNightlyで使ってみると、NightlyのプロセスがCPUリソースを食い続け、半分フリーズしたような状態になるというバグです。

Bug-org 1234422の修正で、ITextStoreACP::GetTextExt()TS_E_NOLAYOUTを返した後、再度、ITextStoreACP::GetTextExt()が再度呼び出され、TS_E_NOLAYOUT以外を返すまで、ITextStoreACPSink::OnLayoutChange()::PostMessageW()を利用して繰り返し、確実にTIPが必要な文字の矩形を得られるようにしました。

しかし、上記のTIPはTS_E_NOLAYOUTを返した後、完全に安全になってからITextStoreACPSink::OnLayoutChange()を呼び出しても、再度、ITextStoreACP::GetTextExt()を呼び出さず、あきらめてしまっていました。このため、::PostMessageW()で何度もリトライが行われ続けていたので、操作していない間はずっとCPUリソースを食い続けるという状況になっていました。

今回の修正で、::PostMessageW()からITextStoreACPSink::OnLayoutChange()を呼び出した後にはそれ以上リトライしないようにしました。

今回、問題になったこれらのTIPではe10sでしかTS_E_NOLAYOUTを返すことがなかったため、e10sが最初に有効になる予定のFirefox 45での修正になっていますが、問題のBug-org 1234422の修正はFirefox 44にも入っていますので、ひょっとすると、今、このバグが原因でCPUリソースを食い続けるTIPがあるかもしれません。そのような症状に会っている方は修正を行いますので、バグを報告するか、私の方まで直接ご連絡ください。

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

bug-org 1237582を含むエントリ