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:
Tweet (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があるかもしれません。そのような症状に会っている方は修正を行いますので、バグを報告するか、私の方まで直接ご連絡ください。