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

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

もずはっく日記(2014年7月)

2014年7月24日

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: (list)

TSFモードを有効にしていると、テストでメモリリークが検出される、というバグです。

nsTextStoreの実装が良くなく、テストスイートのメモリリークの検出時には正確なリーク情報が出ていなかったので、原因の特定に時間がかかりましたが、その辺を修正してみると簡単な話でした。

原因は、nsTextStore自体のリークで、これによって、そのメンバがリークしているのを検出されていたのでした。

nsTextStoreは参照カウンタまわりを、自前のコードで実装しており、コンストラクタで1がセットされるようになっていました。このため、

nsRefPtr<nsTextStore> textStore = new nsTextStore();

というコードでインスタンスを生成した段階で、参照カウンタが、1つ余分に増えており、これによって永遠に開放されることがなくなってしまっていました。

再発防止のため、また、メモリリークを検出しやすくするために、widget/windows/WinUtils.hIUnknown派生クラスの実装時に使えるマクロを作成し、これを利用することで、nsISupportsの派生クラスと同様に扱えるように修正しています。

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

bug-org 995893を含むエントリ