著者
小泉 雄太 荒堀 喜貴 権藤 克彦
雑誌
研究報告ソフトウェア工学(SE) (ISSN:21888825)
巻号頁・発行日
vol.2018-SE-198, no.27, pp.1-8, 2018-03-02

メモリリークは,不要なオブジェクトが将来増えることはない低脅威リークと,不要なオブジェクトが将来増え続ける高脅威リークに脅威度の観点から分類できる.この分類は一定の基準でまとめられたオブジェクト群 (グループ) にも適用可能である.従来の Staleness 解析のような全てのオブジェクトに対して特定の指標でリークの評価 / 報告をするリーク検出手法では,高脅威リークが低脅威リークの報告に埋没する可能性や,高脅威リークの即時判定ができないなどの問題がある.また,バイナリレベルでの解析においては,型情報のようなグループ化に適した情報の取得が困難な現状がある.本研究の提案手法である Pikelet は,バイナリコードを対象に高脅威のリークを高精度に検出することを目的とした動的メモリリーク検出手法である.高脅威リークの漸次的な特性から,グループサイズの成長過程を測定することで高脅威リークのグループを高精度で検出する.また,バイナリ解析で実現可能なグループ化の手段としてオブジェクト割り付け時の calling context を用いる.オブジェクトのグループ化と,グループの成長から脅威度を導出することで,Pikelet は新たに生成されたオブジェクトの危険度を即時判断し,プログラムに差し迫った脅威をより正確に報告する.実用プログラムを対象とする実験の結果,Pikelet は既存研究に比べて高脅威リークオブジェクト群の検知において精度の向上を示した (同一実行内での計測結果の平均で Recall は 22 ポイント,Precision は 80 ポイントの精度向上を達成した).また,実行オーバーヘッドは既存手法と同程度に収まることを確認した.