Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1321631.1321678acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Testing concurrent programs using value schedules

Published: 05 November 2007 Publication History

Abstract

Concurrent programs are difficult to debug and verify because of the nondeterministic nature of concurrent executions. A particular concurrency-related bug may only show up under certain rarely-executed thread interleavings. Therefore, commonly used debugging methodologies, such as inserting print statements, are no longer sufficient for uncovering concurrency-related bugs. However, many existing bug detection methods, such as dynamic analysis and model checking, have a very high computational cost.
In this paper, we introduce a new technique for uncovering concurrency-related bugs from multithreaded Java programs. Our technique uncovers concurrency-related bugs by generating and testing read-write assignment sequences, referred to as value schedules, of a multithreaded Java program. Our value-schedule-based technique distinguishes itself in its ability to avoid exploring superfluous program state space caused by speculative permutation on transitions. Therefore, our technique can achieve a higher degree of POR (Partial Order Reduction) than existing methods. We demonstrate our technique using some programs, with an implementation built using an explicit state model checker called JPF

References

[1]
M. Abadi, C. Flanagan, and S. N. Freund. Types for safe locking: Static race detection for java. ACM Transactions on Programming Language and Systems, 28(2):207--255, 2006.
[2]
R. Agarwal, A. Sasturkar, L. Wang, and S. D. Stoller. Optimized run-time race detection and atomicity checking using partial discovered types. In Proc. 20th IEEE/ACM International Conference on Automated Software Engineering, pages 233--242, 2005.
[3]
C. Artho, K. Havelund, and A. Biere. High-level data races. In Proc. Workshop on Verification and Validation of Enterprise Information Systems, pages 82--93, 2003.
[4]
M. Biberstein, E. Farchi, and S. Ur. Choosing among alternative pasts. In Proc. 17th International Symposium on Parallel and Distributed Processing, page 289.1, 2003.
[5]
M. Biberstein, E. Farchi, and S. Ur. Fidgeting to the point of no return. In Proc. 18th International Parallel and Distributed Processing Symposium, page 266b, 2004.
[6]
G. Brat and W. Visser. Combining static analysis and model checking for software analysis. In Proc. 16th IEEE International Conference on Automated Software Engineering, pages 262--269, 2001.
[7]
R. H. Carver and K. Tai. Modern Multithreading. Wiley-Interscience, 2005.
[8]
S. Copty and S. Ur. Multi-threaded testing with aop is easy, and it finds bugs! In Proc. 11th International Euro-Par Conference, volume 3648 of Lecture Notes in Computer Science, pages 740--749. Springer-Verlag, 2005.
[9]
M. Emami, R. Ghiya, and L. J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Proc. ACM SIGPLAN 1994 Conference on Programming Language Design and Implementation, pages 242--256, 1994.
[10]
D. Engler and K. Ashcraft. Racerx: Effective, static detection of race conditions and deadlocks. In Proc. 19th ACM Symp. on Operating Systems Principles, pages 237--252, 2003.
[11]
C. Flanagan and S. Freund. Atomizer: A dynamic atomicity checker for multithreaded programs. In Proc. 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 256--267, 2004.
[12]
J. Gait. A probe effect in concurrent programs. Software: Practice and Experience, 16(3):225--233, 1986.
[13]
P. Godefroid. Model checking for programming languages using verisoft. In Proc. 24th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pages 174--186, 1997.
[14]
K. Havelund and G. Rosu. An overview of the runtime verification tool java path explorer. Formal Methods in System Design, 24(2):189--215, 2004.
[15]
G. J. Holzmann. The model checker spin. IEEE Transactions on Software Engineering, 23(5):279--295, 1997.
[16]
G.-H. Hwang, K.-C. Tai, and T.-L. Huang. Reachability testing: An approach to testing concurrent software. In Proc. First Asia-Pacific Software Engineering Conference, pages 246--255, 2004.
[17]
Y. Lei and R. Carver. Reachability testing of concurent programs. IEEE Transaction on Software Engineering, 32(6):382--403, 2006.
[18]
O. Lhotak and L. Hendren. Scaling java points-to analysis using spark. In Proc. 12th International Conference on Compiler Construction, pages 153--169, 2003.
[19]
S. MacDonald, J. Chen, and D. Novillo. Choosing among alternative futures. In Haifa Verification Conference, volume 3875 of Lecture Notes in Computer Science, pages 247--264. Springer-Verlag, 2005.
[20]
M. Naik and A. Aiken. Conditional must not aliasing for static race detection. In Proc. 34th annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 327--338, 2007.
[21]
M. Naik, A. Aiken, and J. Whaley. Effective static race detection for java. In Proc. ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation, pages 308--319, 2006.
[22]
G. Naumovich, G. S. Avrunin, and L. A. Clarke. An efficient algorithm for computing mhp information for concurrent java programs. In Proc. 7th ACM SIGSOFT Symposium on the Foundations of Software Engineering, volume 1687 of Lecture Notes in Computer Science, page 338, 1999.
[23]
R. H. B. Netzer and B. P. Miller. What are race conditions?: Some issues and formalizations. ACM Letter on Programming Languages and Systems, 1(1):74--88, 1992.
[24]
S. Qadeer and D. Wu. Kiss: Keep it simple and sequential. In Proc. ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation, pages 14--24, 2004.
[25]
G. Ramalingam. Context-sensitive synchronization-sensitive analysis is undecidable. ACM Transaction Programming Language System, 22(2):416--430, 2000.
[26]
S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: a dynamic data race detector for multi-threaded programs. In Proc. 16th ACM Symposium on Operating Systems Principles, pages 27--37, 1997.
[27]
R. N. Taylor. Complexity of analyzing the synchronization structure of concurrent programs. Acta Informatica, 19(1):57--84, 1983.
[28]
R. ValleRai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan. Soot-a java bytecode optimization framework. In Proc. 1999 Conference of the Centre for Advanced Studies on Collaborative Research, page 13, 1999.
[29]
W. Visser, K. Havelund, G. Brat, S. Park, and F. Lerda. Model checking programs. Automated Software Engineering, 10(2):203--232, 2003.
[30]
L. Wang and S. D. Stoller. Accurate and efficient runtime detection of atomicity errors in concurrent programs. In Proc. 11th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 137--146, 2006.
[31]
Y. Yu, T. Rodeheffer, and W. Chen. Racetrack: efficient detection of data race conditions via adaptive tracking. In Proc. 20th ACM Symposium on Operating Systems Principles, pages 221--234, 2005.

Cited By

View all
  • (2020)Thread Scheduling Sequence Generation Based on All Synchronization Pair Coverage CriteriaInternational Journal of Software Engineering and Knowledge Engineering10.1142/S021819402050005930:01(97-118)Online publication date: 27-Feb-2020
  • (2018)A Survey of Recent Trends in Testing Concurrent Software SystemsIEEE Transactions on Software Engineering10.1109/TSE.2017.270708944:8(747-783)Online publication date: 1-Aug-2018
  • (2017)Efficient detection of thread safety violations via coverage-guided generation of concurrent testsProceedings of the 39th International Conference on Software Engineering10.1109/ICSE.2017.32(266-277)Online publication date: 20-May-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '07: Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering
November 2007
590 pages
ISBN:9781595938824
DOI:10.1145/1321631
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 05 November 2007

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concurrent
  2. model checking
  3. value schedule

Qualifiers

  • Research-article

Conference

ASE07

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)0
Reflects downloads up to 03 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Thread Scheduling Sequence Generation Based on All Synchronization Pair Coverage CriteriaInternational Journal of Software Engineering and Knowledge Engineering10.1142/S021819402050005930:01(97-118)Online publication date: 27-Feb-2020
  • (2018)A Survey of Recent Trends in Testing Concurrent Software SystemsIEEE Transactions on Software Engineering10.1109/TSE.2017.270708944:8(747-783)Online publication date: 1-Aug-2018
  • (2017)Efficient detection of thread safety violations via coverage-guided generation of concurrent testsProceedings of the 39th International Conference on Software Engineering10.1109/ICSE.2017.32(266-277)Online publication date: 20-May-2017
  • (2017)10 Years of research on debugging concurrent and multicore softwareSoftware Quality Journal10.1007/s11219-015-9301-725:1(49-82)Online publication date: 1-Mar-2017
  • (2015)Model checking of concurrent programs with static analysis of field accessesScience of Computer Programming10.1016/j.scico.2014.10.00898:P4(735-763)Online publication date: 1-Feb-2015
  • (2013)State-cover testing for nondeterministic terminating concurrent programs with an infinite number of synchronization sequencesScience of Computer Programming10.1016/j.scico.2012.06.00578:9(1294-1323)Online publication date: Sep-2013
  • (2012)SimTesterACM SIGPLAN Notices10.1145/2365864.215103447:7(51-62)Online publication date: 3-Mar-2012
  • (2012)SimTesterProceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments10.1145/2151024.2151034(51-62)Online publication date: 3-Mar-2012
  • (2012)Location pairsEmpirical Software Engineering10.1007/s10664-011-9166-817:3(129-165)Online publication date: 1-Jun-2012
  • (2011)Identifying future field accesses in exhaustive state space traversalProceedings of the 26th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE.2011.6100154(93-102)Online publication date: 6-Nov-2011
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media