ACM Home Page
Please provide us with feedback. Feedback
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Full text FlvFlv (26:00),  Mp3Mp3 (10.94 MB),  PdfPdf (329 KB)
Source
Architectural Support for Programming Languages and Operating Systems archive
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems table of contents
Seattle, WA, USA
SESSION: Security & bugs table of contents
Pages 329-339  
Year of Publication: 2008
ISBN:978-1-59593-958-6
Also published in ...
Authors
Shan Lu  University of Illinois at Urbana Champaign, Urbana, IL
Soyeon Park  University of Illinois at Urbana Champaign, Urbana, IL
Eunsoo Seo  University of Illinois at Urbana Champaign, Urbana, IL
Yuanyuan Zhou  University of Illinois at Urbana Champaign, Urbana, IL
Sponsors
ACM: Association for Computing Machinery
SIGARCH: ACM Special Interest Group on Computer Architecture
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGOPS: ACM Special Interest Group on Operating Systems
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 70,   Downloads (12 Months): 445,   Citation Count: 11
Additional Information:

appendices and supplements   abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1346281.1346323
What is a DOI?

APPENDICES and SUPPLEMENTS
Supplemental material for Learning from mistakes: a comprehensive study on real world concurrency bug characteristics


ABSTRACT

The reality of multi-core hardware has made concurrent programs pervasive. Unfortunately, writing correct concurrent programs is difficult. Addressing this challenge requires advances in multiple directions, including concurrency bug detection, concurrent program testing, concurrent programming model design, etc. Designing effective techniques in all these directions will significantly benefit from a deep understanding of real world concurrency bug characteristics.

This paper provides the first (to the best of our knowledge) comprehensive real world concurrency bug characteristic study. Specifically, we have carefully examined concurrency bug patterns, manifestation, and fix strategies of 105 randomly selected real world concurrency bugs from 4 representative server and client open-source applications (MySQL, Apache, Mozilla and OpenOffice). Our study reveals several interesting findings and provides useful guidance for concurrency bug detection, testing, and concurrent programming language design.

Some of our findings are as follows: (1) Around one third of the examined non-deadlock concurrency bugs are caused by violation to programmers' order intentions, which may not be easily expressed via synchronization primitives like locks and transactional memories; (2) Around 34% of the examined non-deadlock concurrency bugs involve multiple variables, which are not well addressed by existing bug detection tools; (3) About 92% of the examined concurrency bugs canbe reliably triggered by enforcing certain orders among no more than 4 memory accesses. This indicates that testing concurrent programs can target at exploring possible orders among every small groups of memory accesses, instead of among all memory accesses; (4) About 73% of the examinednon-deadlock concurrency bugs were not fixed by simply adding or changing locks, and many of the fixes were not correct at the first try, indicating the difficulty of reasoning concurrent execution by programmers.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
3
4
5
 
6
7
8
 
9
O. Edelstein, E. Farchi, Y. Nir, G. Ratsaby, and S. Ur. Multi-threaded java program test generation. IBM Systems Journal, 2002.
10
 
11
12
13
 
14
W. Gu, Z. Kalbarczyk, R. K. Iyer, and Z. Yang. Characterization of linux kernel behavior under errors. In DSN, 2003.
15
16
17
 
18
R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Usenix, 1992.
 
19
20
21
22
23
24
 
25
 
26
K. E. Moore, J. Bobba, M. J. Moravan, M. D. Hill, and D. A. Wood. Logtm: Log-based transactional memory. In HPCA, 2006.
 
27
28
29
 
30
N. Nethercote and J. Seward. Valgrind: A program supervision framework. ENTCS, 2003.
31
 
32
33
34
35
36
37
 
38
M. Sullivan and R. Chillarege. A comparison of software defects in database management systems and operating systems. In FTCS, 1992.
 
39
40
41
42
43

CITED BY  11

Collaborative Colleagues:
Shan Lu: colleagues
Soyeon Park: colleagues
Eunsoo Seo: colleagues
Yuanyuan Zhou: colleagues