60 likes | 162 Vues
This talk shares experiences in bug/application analysis using BugBench, a benchmark suite for memory, multi-thread, and semantic bugs. The tool has been utilized by various research groups to improve bug detection tools. Valgrind, Purify, and CCured are analyzed with benchmarks showing performance overhead. The importance of bug/application characteristics and community cooperation in bug detection tools is highlighted.
E N D
BugBench: ABenchmarkfor EvaluatingBug Detection Tools Shan Lu, Zhenmin Li, Feng Qin, Lin Tan, Pin Zhou and Yuanyuan Zhou University of Illinois, Urbana-Champaign
Content of This Talk • Share our experience • Bug/application characteristics analysis • BugBench has been used by • Our previous work [Micro’04, ISCA’04, HPCA’05] • Other research groups: UCSD, Purdue, NCSU, etc.
Current Benchmark Suite memory related multi-thread related semantic Other type of bugs: In searching …
Functionality Valgrind Purify CCured miss stack buffer overflow miss moderate global-buffer overflow miss stack buffer overflow miss 1 Byte global-buffer overflow Failed to apply
NCOM BC Memory Alloc Freq. (# per MInst) 769 0 138 480 NCOM BC BC NCOM Mem. Access Freq. (# per Instruction) .48 .5 .52 .55 .62 .85 .65 .69 Overhead • Valgrind: 6.4X (NCOM) ~ 119X (BC) • Purify: 28% (POLY) ~ 76X (BC) • CCured: 4% (POLY) ~ 3.7X (GZIP) 1.35X 69% 18% 28% 4% Heap Usage Ratio[Heap/(Heap+Stack)] 85.1% 99% 0% 23.9% 76.6%
Experience Summary • Building benchmark is a time-consuming and long-term work • Motivate automatic tools to extract bugs • Bug/application characteristics are important for selecting applications • Need cooperation from entire community