Abstract
We present new techniques for fast, accurate and scalable static data race detection in concurrent programs. Focusing our analysis on Linux device drivers allowed us to identify the unique challenges posed by debugging large-scale real-life code and also pinpointed drawbacks in existing race warning generation methods. This motivated the development of new techniques that helped us in improving both the scalability as well as the accuracy of each of the three main steps in a race warning generation system. The first and most crucial step is the automatic discovery of shared variables. Towards that end, we present a new, efficient dataflow algorithm for shared variable detection which is more effective than existing correlation-based techniques that failed to detect the shared variables responsible for data races in majority of the drivers in our benchmark suite. Secondly, accuracy of race warning generation strongly hinges on the precision of the pointer analysis used to compute aliases for lock pointers. We formulate a new scalable context sensitive alias analysis that effectively combines a divide and conquer strategy with function summarization and is demonstrably more efficient than existing BDD-based techniques. Finally, we provide a new warning reduction technique that leverages lock acquisition patterns to yield provably better warning reduction than existing lockset based methods.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Brat, G., Havelund, K., Park, S., Visser, W.: Model checking programs. In: ASE 2000
Burrows, M., Leino, K.: Finding stale-value errors in concurrent programs. In: Compaq Systems Research Center SRC-TR-2002-004 (2002)
Clarke, E.M., Emerson, E.A.: Design and synthesis of synchronization skeletons using branching time temporal logic. In: Workshop on Logics of Programs, pp. 52–71 (1981)
Corbett, J., Dwyer, M., Hatcliff, J., Laubach, S., Robby, C.P., Zheng, H.: Bandera: Extracting finite-state models from java source code. In: ICSE 2000 (2000)
Detlefs, D., Leino, K.R.M., Nelson, G., Saxe, J.: Extended static checking. In: TR SRC-159 Compaq SRC (1998)
Dinning, A., Schonberg, E.: An empirical comparision of monitoring algorithms for access anomaly detection. In: PPoPP 1990 (1990)
Engler, D., Ashcraft, K.: RacerX: Effective, Static Detection of Race Conditions and Deadlocks. In: SOSP 2003 (2003)
Choi, J., Lee, K., Loginov, A., O’Callahan, R., Sarkar, V., Sridharan, M.: Efficient and precise datarace detection for multithreaded object-oriented programs. In: PLDI 2002 (2002)
Kahlon, V., Ivančić, F., Gupta, A.: Reasoning about threads communicating via locks. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, Springer, Heidelberg (2005)
Leino, R., Neslon, G., Saxe, J.: Esc/java users’ manual. Technical Note 2000-002, Compaq Systems Research Center (2001)
Mellor-Crummey, J.: One-the-fly detection of data races for programs with nested fork-join parallelism. In: Proceedings of the 1991 Supercomputer Debugging Workshop (1991)
Naik, M., Aiken, A.: Conditional must not aliasing for static race detection. In: POPL 2007 (2007)
Naik, M., Aiken, A., Whaley, J.: Effective static race detection for java. In: PLDI 2006 (2006)
Pratikakis, P., Foster, J.S., Hicks, M.: LOCKSMITH: Context-Sensitive Correlation Analysis for Race Detection. In: PLDI 2006 (2006)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: A dynamic data race detector for multithreaded programming. ACM TCS 15(4) (1997)
Steensgaard, B.: Points-to analysis in almost linear time. In: POPL 1996 (1996)
Sterling, N.: Warlock: A static data race analysis tool. In: USENIX Winter Technical Conference (1993)
Whaley, J., Lam, M.: Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In: PLDI 2004 (2004)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kahlon, V., Yang, Y., Sankaranarayanan, S., Gupta, A. (2007). Fast and Accurate Static Data-Race Detection for Concurrent Programs. In: Damm, W., Hermanns, H. (eds) Computer Aided Verification. CAV 2007. Lecture Notes in Computer Science, vol 4590. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-73368-3_26
Download citation
DOI: https://doi.org/10.1007/978-3-540-73368-3_26
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-73367-6
Online ISBN: 978-3-540-73368-3
eBook Packages: Computer ScienceComputer Science (R0)