@article{oai:ipsj.ixsq.nii.ac.jp:00234270, author = {伊藤, 弘将 and 松原, 豊 and 高田, 広章 and Hiromasa, Ito and Yutaka, Matsubara and Hiroaki, Takada}, issue = {5}, journal = {情報処理学会論文誌}, month = {May}, note = {並行バグは,特定のスレッドスケジューリングパターンでプログラムを実行した場合にのみ顕在化する.また,一般的な実行環境はスレッドを非決定論的にスケジュールするため,バグを踏んだ入力を再度与えてプログラムを実行しても,そのバグが再現するとは限らない.そのため,一般的なfuzzing手法で並行バグを探索するのは困難である.本研究は,feedback-guided fuzzingにより並行バグを探索する新たな手法を提案する.提案手法は,テスト対象プログラム(Program Under Test;PUT)を,fuzzerが生成したテストケースに基づき,決定論的に実行する.さらに,PUTの実行時に発生した共有メモリアクセスの順序を,fuzzerへフィードバックし,より効率的かつ効果的な並行バグ探索を試みる.並行バグ探索ツールの評価用ベンチマークスイートSCTBenchに含まれる19種類のプログラムをPUTとし,提案手法の有効性を評価した.結果として,提案手法は,単純なプログラムに対してはdumb fuzzingに劣ったものの,比較的複雑なプログラムに対しては,他の手法よりも効率的かつ効果的に並行バグを探索し,その有効性を発揮した.この結果は,複雑な実世界プログラムに対する提案手法の有効性を示唆するものである., Concurrency bugs manifest only when a program runs under specific thread interleaving patterns. In addition, execution environments often schedule threads nondeterministically so that even if the program runs again with the input that manifested the bug, it will not necessarily reappear. Therefore, exploring concurrency bugs using general fuzzing methods takes much work. This research proposes a new method to explore for concurrency bugs with feedback-guided fuzzing. It deterministically executes the program under test (PUT) based on the test cases generated by the fuzzer. Furthermore, it feeds back the order of shared memory accesses during the execution of the PUT to the fuzzer to explore for concurrency bugs more efficiently and effectively. We evaluated the proposed method using 19 programs in SCTBench, a benchmark suite for evaluating concurrency bug detection tools. As a result, although the proposed method was inferior to dumb fuzzing for simple programs, it explored for concurrency bugs more efficiently and effectively than other methods for complex programs. The results suggest the effectiveness of the proposed method for more complex real-world programs.}, pages = {927--941}, title = {Feedback-guided Fuzzingによる並行バグ探索}, volume = {65}, year = {2024} }