著者
権藤 克彦 新山 祐介 荒堀 喜貴
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.39, no.4, pp.4_97-4_128, 2022-10-25 (Released:2022-11-22)

本論文ではSwift言語のARC機能により発生する強い循環参照やメモリリークを自動的に検知する新しいツールUCDetectorを提案する.Swift言語の「静的型付けで安全な言語でありながら低レベルなプログラミングが可能」という特徴,SwiftリフレクションAPI,デバッガ lldb Pyton APIを用いることで,簡易かつコンパクトな実装が可能だったこと,その際に自明ではない様々な障壁があったことを知見として本論文では報告する.また,実装した循環参照検知器の精度と効率に対する予備評価の結果も報告する.
著者
小泉 雄太 荒堀 喜貴 権藤 克彦
雑誌
研究報告ソフトウェア工学(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 ポイントの精度向上を達成した).また,実行オーバーヘッドは既存手法と同程度に収まることを確認した.
著者
森川 知哉 荒堀 喜貴 権藤 克彦
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.31, no.1, pp.1_103-1_109, 2014-01-27 (Released:2014-03-03)

未定義動作を伴う整数オーバーフロー(時限爆弾)は重大な脆弱性の原因となる.本論文では時限爆弾を軽量に効率よく検出する手法として6つの固定的な整数値(整数境界値)を使う方法を提案し,19のオープンソースに適用して定量的に評価した.その結果,整数境界値は従来のランダム法に比べて,平均で36.7%多くの時限爆弾を検出した.さらに,整数演算の未定義動作のうち,比較・ビット演算が61.3%を占めることと,比較・ビット演算とその他の演算での,整数境界値による時限爆弾の検出率には有意差がないという結果を得た.
著者
鮎川 力也 権藤 克彦 荒堀 喜貴
出版者
一般社団法人電子情報通信学会
雑誌
電子情報通信学会論文誌. D, 情報・システム (ISSN:18804535)
巻号頁・発行日
vol.95, no.2, pp.217-224, 2012-02-01
参考文献数
15

C言語のコンパイラ最適化器,ガベージコレクタ,及びファイナライザの相互作用によって誤解放の問題が生じ得る.この問題は.volatileなど,現在のC言語の機能では適切には解決できない.本論文では,この問題の適切な解決方法として新しい型修飾子strict_lifetimeを提案し,strict_lifetimeは保守性などの点で適切な解決方法であることを論じる.また,strict_lifetimeをGCCに実装し,CRubyに対する有効性を調査した結果,実装コストと実行コストが小さく,誤解放を防ぐ効果も高いという結果を得た.