Bug-org 995893 TEST-UNEXPECTED-FAIL | leakcheck | 8 bytes leaked (nsTArray_base) with intl.tsf.enable=true
初回投稿日時: 2014年07月24日05時37分37秒
最終更新日時: 2014年07月24日05時38分11秒
カテゴリ: Mozilla Core Mozilla33 TSF Windows バグ修正
SNS:
Tweet (list)
TSFモードを有効にしていると、テストでメモリリークが検出される、というバグです。
nsTextStore
の実装が良くなく、テストスイートのメモリリークの検出時には正確なリーク情報が出ていなかったので、原因の特定に時間がかかりましたが、その辺を修正してみると簡単な話でした。
原因は、nsTextStore
自体のリークで、これによって、そのメンバがリークしているのを検出されていたのでした。
nsTextStore
は参照カウンタまわりを、自前のコードで実装しており、コンストラクタで1がセットされるようになっていました。このため、
nsRefPtr<nsTextStore> textStore = new nsTextStore();
というコードでインスタンスを生成した段階で、参照カウンタが、1つ余分に増えており、これによって永遠に開放されることがなくなってしまっていました。
再発防止のため、また、メモリリークを検出しやすくするために、widget/windows/WinUtils.h
にIUnknown
派生クラスの実装時に使えるマクロを作成し、これを利用することで、nsISupports
の派生クラスと同様に扱えるように修正しています。