Abstract
Recent research has proposed several analyses to mitigate the fact that finding concurrency bugs in multi-threaded software is notoriously hard. This work proposes a new analysis based on a correctness criterion called “atomic-set serializability”, which incorporates both race conditions and traditional atomicity/serializability. We present a novel analysis based on conflict cycle detection that is guaranteed to find all violations in the intercepted execution trace. A set of heuristics automatically determines all annotations required for atomic-set serializability. We implemented the analysis and evaluated it on a suite consisting of real programs and benchmarks. The evaluation demonstrates the usefulness of our heuristics by finding a number of known (as well as new) violations with competitive overhead and a very low false positive rate.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Artho, C., Havelund, K., Biere, A.: High-level data races. Journal on Software Testing, Verification and Reliability (STVR) 13(4), 207–227 (2003)
Artho, C., Havelund, K., Biere, A.: Using Block-Local Atomicity to Detect Stale-Value Concurrency Errors. In: Wang, F. (ed.) ATVA 2004. LNCS, vol. 3299, pp. 150–164. Springer, Heidelberg (2004)
Ben-Asher, Y., Eytani, Y., Farchi, E., Ur, S.: Noise makers need to know where to be silent - producing schedules that find bugs. In: ISOLA 2006 (2006)
Bernstein, P., Hadzilacos, V., Goodman, N.: Concurrency Control and Recovery in Database Systems. Addison-Wesley (1987)
Bernstein, P.A., Goodman, N.: Concurrency Control in Distributed Database Systems. ACM Comput. Surv. 13(2), 185–221 (1981)
Burnim, J., Necula, G., Sen, K.: Specifying and checking semantic atomicity for multithreaded programs. In: ASPLOS 2011 (2011)
Burrows, M., Leino, K.R.M.: Finding stale-value errors in concurrent programs. Concurrency and Computation: Practice and Experience 16(12), 1161–1172 (2004)
Chen, Q., Wang, L.: An Integrated Framework for Checking Concurrency-Related Programming Errors. In: COMPSAC 2009 (2009)
Chen, Q., Wang, L., Yang, Z., Stoller, S.D.: HAVE: Detecting Atomicity Violations via Integrated Dynamic and Static Analysis. In: Chechik, M., Wirsing, M. (eds.) FASE 2009. LNCS, vol. 5503, pp. 425–439. Springer, Heidelberg (2009)
Clarke, D.G., Noble, J., Potter, J.M.: Simple Ownership Types for Object Containment. In: Lee, S.H. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 53–76. Springer, Heidelberg (2001)
Eytani, Y., Ur, S.: Compiling a benchmark of documented multi-threaded bugs. In: IPDPS 2004 (2004)
Farzan, A., Madhusudan, P.: Monitoring Atomicity in Concurrent Programs. In: Gupta, A., Malik, S. (eds.) CAV 2008. LNCS, vol. 5123, pp. 52–65. Springer, Heidelberg (2008)
Flanagan, C., Freund, S.N.: Atomizer: a dynamic atomicity checker for multithreaded programs. In: POPL 2004 (2004)
Flanagan, C., Freund, S.N., Yi, J.: Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs. In: PLDI 2008 (2008)
Fle, M.P., Roucairol, G.: On serializability of iterated transactions. In: PODC 1982 (1982)
Gait, J.: A probe effect in concurrent programs. Software: Practice and Experience 16(3), 225–233 (1986)
Goetz, B., Peierls, T., Bloch, J., Bowbeer, J., Holmes, D., Lea, D.: Java Concurrency in Practice. Addison Wesley Professional (May 2006)
Haeupler, B., Kavitha, T., Mathew, R., Sen, S., Tarjan, R.E.: Faster Algorithms for Incremental Topological Ordering. In: Aceto, L., Damgård, I., Goldberg, L.A., Halldórsson, M.M., Ingólfsdóttir, A., Walukiewicz, I. (eds.) ICALP 2008, Part I. LNCS, vol. 5125, pp. 421–433. Springer, Heidelberg (2008)
Hammer, C., Dolby, J., Vaziri, M., Tip, F.: Dynamic detection of atomic-set-serializability violations. In: ICSE 2008 (2008)
Kahlon, V., Wang, C.: Universal Causality Graphs: A Precise Happens-Before Model for Detecting Bugs in Concurrent Programs. In: Touili, T., Cook, B., Jackson, P. (eds.) CAV 2010. LNCS, vol. 6174, pp. 434–449. Springer, Heidelberg (2010)
Lai, Z., Cheung, S.C., Chan, W.K.: Detecting atomic-set serializability violations in multithreaded programs through active randomized testing. In: ICSE 2010 (2010)
Lipton, R.J.: Reduction: a method of proving properties of parallel programs. Commun. ACM 18(12), 717–721 (1975)
Lu, S., Tucek, J., Qin, F., Zhou, Y.: AVIO: Detecting Atomicity Violations via Access Interleaving Invariants. In: ASPLOS 2006 (2006)
Martin, J.P., Hicks, M., Costa, M., Akritidis, P., Castro, M.: Dynamically checking ownership policies in concurrent C/C++ programs. In: POPL 2010 (2010)
Min, S.L., Choi, J.D.: An efficient cache-based access anomaly detection scheme. In: ASPLOS 1991 (1991)
Narayanasamy, S., Wang, Z., Tigani, J., Edwards, A., Calder, B.: Automatically classifying benign and harmful data races using replay analysis. In: PLDI 2007 (2007)
O’Callahan, R., Choi, J.D.: Hybrid dynamic data race detection. In: PPoPP 2003 (2003)
Papadimitriou, C.: The theory of database concurrency control. Computer Science Press, Inc., New York (1986)
Park, C., Sen, K.: Randomized active atomicity violation detection in concurrent programs. In: FSE 2008 (2008)
Park, S., Vuduc, R.W., Harrold, M.J.: Falcon: fault localization in concurrent programs. In: ICSE 2010 (2010)
Park, S., Lu, S., Zhou, Y.: CTrigger: exposing atomicity violation bugs from their hiding places. In: ASPLOS 2009 (2009)
von Praun, C., Gross, T.R.: Object race detection. In: OOPSLA 2001 (2001)
von Praun, C., Gross, T.R.: Atomicity Violations in Object-Oriented Programs. Journal of Object Technology 3(6), 103–122 (2004)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: a dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst. 15(4), 391–411 (1997)
Sumner, W.N., Zheng, Y., Weeratunge, D., Zhang, X.: Precise calling context encoding. In: ICSE 2010 (2010)
Vaziri, M., Tip, F., Dolby, J.: Associating synchronization constraints with data in an object-oriented language. In: POPL 2006 (2006)
Vaziri, M., Tip, F., Dolby, J., Hammer, C., Vitek, J.: A Type System for Data-Centric Synchronization. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 304–328. Springer, Heidelberg (2010)
Wang, L., Stoller, S.D.: Accurate and Efficient Runtime Detection of Atomicity Errors in Concurrent Programs. In: PPoPP 2006 (2006)
Wang, L., Stoller, S.D.: Runtime Analysis of Atomicity for Multithreaded Programs. IEEE Transactions on Software Engineering 32(2), 93–110 (2006)
Xu, M., Bodík, R., Hill, M.D.: A serializability violation detector for shared-memory server programs. In: PLDI 2005 (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sumner, W.N., Hammer, C., Dolby, J. (2012). Marathon: Detecting Atomic-Set Serializability Violations with Conflict Graphs. In: Khurshid, S., Sen, K. (eds) Runtime Verification. RV 2011. Lecture Notes in Computer Science, vol 7186. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-29860-8_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-29860-8_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-29859-2
Online ISBN: 978-3-642-29860-8
eBook Packages: Computer ScienceComputer Science (R0)