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