ABSTRACT
Transactional Memory allows programmers to reduce the number of synchronization errors introduced in concurrent programs, but does not ensures its complete elimination. This paper proposes a pattern matching based approach to the static detection of atomicity violation, based on a path-sensitive symbolic execution method to model four anomalies that may affect Transactional Memory programs. The proposed technique may be used to to bring to programmer's attention pairs of transactions that the programmer has mis-specified, and should have been combined into a single transaction. The algorithm first traverses the AST tree, removing all the non-transactional blocks and generating a trace tree in the path sensitive manner for each thread. The trace tree is a Trie like data structure, where each path from root to a leaf is a list of transactions. For each pair of threads, erroneous patterns involving two consecutive transactions are then checked in the trace tree. Results allow to conclude that the proposed technique, although triggering a moderate number of false positives, can be successfully applied to Java programs, correctly identifying the vast majority of the relevant erroneous patterns.
References
- }}Lars Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994.Google Scholar
- }}C. Artho, K. Havelund, and A. Biere. High-level data races, 2003.Google Scholar
- }}Cyrille Artho, Klaus Havelund, and Armin Biere. Using block-local atomicity to detect stale-value concurrency errors. In Farn Wang, editor, ATVA, volume 3299 of Lecture Notes in Computer Science, pages 150--164. Springer, 2004.Google Scholar
- }}Nels E. Beckman, Kevin Bierhoff, and Jonathan Aldrich. Verifying correct usage of atomic blocks and typestate. SIGPLAN Not., 43(10):227--244, 2008. Google Scholar
Digital Library
- }}Colin Blundell, E. Christopher Lewis, and Milo M. K. Martin. Deconstructing transactional semantics: The subtleties of atomicity. In Fourth Annual Workshop on Duplicating, Deconstructing, and Debunking, June 2005.Google Scholar
- }}Ricardo Dias. Source-to-source java stm framework compiler. Technical report, Departamento de Informática FCT/UNL, April 2009.Google Scholar
- }}Evelyn Duesterwald and Mary Lou Soffa. Concurrency analysis in the presence of procedures using a data-flow framework. In TAV4: Proceedings of the symposium on Testing, analysis, and verification, pages 36--48, New York, NY, USA, 1991. ACM. Google Scholar
Digital Library
- }}Cormac Flanagan and Stephen N Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In POPL '04: Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 256--267, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- }}Maurice Herlihy, Victor Luchangco, Mark Moir, and III William N. Scherer. Software transactional memory for dynamic-sized data structures. In PODC '03: Proceedings of the twenty-second annual symposium on Principles of distributed computing, pages 92--101, New York, NY, USA, 2003. ACM. Google Scholar
Digital Library
- }}IBM's Concurrency Testing Repository.Google Scholar
- }}Richard J. Lipton. Reduction: a method of proving properties of parallel programs. Commun. ACM, 18(12):717--721, 1975. Google Scholar
Digital Library
- }}Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for java. In CC, pages 138--152, 2003. Google Scholar
Digital Library
- }}Nir Shavit and Dan Touitou. Software transactional memory. In PODC '95: Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing, pages 204--213, New York, NY, USA, 1995. ACM. Google Scholar
Digital Library
- }}Christoph von Praun and Thomas R. Gross. Static detection of atomicity violations in object-oriented programs. In Journal of Object Technology, page 2004, 2003.Google Scholar
- }}Liqiang Wang and Scott D. Stoller. Run-time analysis for atomicity. Electronic Notes in Theoretical Computer Science, 89(2):191--209, 2003. RV '2003, Run-time Verification (Satellite Workshop of CAV '03).Google Scholar
Cross Ref
Index Terms
Detection of Transactional Memory anomalies using static analysis

João Lourenço


Comments