Skip to main content
Log in

Runtime verification of concurrency-specific correctness criteria

  • Runtime Verification
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

Abstract

We give an overview of correctness criteria specific to concurrent shared-memory programs and runtime verification techniques for verifying these criteria. We cover a spectrum of criteria, from ones focusing on low-level thread interference such as races to higher-level ones such as linearizability. We contrast these criteria in the context of runtime verification. We present the key ideas underlying the runtime verification techniques for these criteria and summarize the state of the art. Finally, we discuss the issue of coverage for runtime verification for concurrency and present techniques that improve the set of covered thread interleavings.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Bernstein P.A., Hadzilacos V., Goodman N.: Concurrency control and recovery in database systems. Addison-Wesley, Reading (1987)

    Google Scholar 

  2. Blundell, C., Martin, M.M.K., Wenisch, T.F.: InvisiFence: Performance-transparent memory ordering in conventional multiprocessors. In: Proceedings of the 36th annual International Symposium on Computer architecture, ISCA ’09, pp. 233–244. ACM, New York (2009)

  3. Bodden, E., Havelund, K.: Racer: effective race detection using aspectj. In: Proceedings of the 2008 international symposium on Software testing and analysis, ISSTA ’08, pp. 155–166. ACM, New York, NY, USA (2008)

  4. Boehm, H.-J., Adve, S.V.: Foundations of the c++ concurrency memory model. In: PLDI 08: Programming Language Design and Implementation, pp. 68–78 (2008)

  5. Burckhardt, S., Dern, C., Musuvathi, M., Tan, R.: Line-up: a complete and automatic linearizability checker. In: Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation, PLDI ’10, pp. 330–340. ACM, New York, NY, USA (2010)

  6. Burnim, J., Elmas, T., Necula, G., Koushik S.: Ndseq: runtime checking for nondeterministic sequential specifications of parallel correctness. In: PLDI 11: Programming Language Design and Implementation (2011)

  7. Carver R.H., Tai K.-C.: Replay and testing for concurrent programs. IEEE Softw. 8(2), 66–74 (1991)

    Article  Google Scholar 

  8. Chen, F., Serbanuta, T.F., Rosu, G.: jpredictor: a predictive runtime analysis tool for java. In: ICSE: International Conference on Software Engineering, pp. 221–230. ACM (2008)

  9. Choi, J.-D., Lee, K., Loginov, A., O’Callahan, R., Sarkar, V., Sridharan, M.: Efficient and precise datarace detection for multithreaded object-oriented programs. In: PLDI ’02: Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation, pp. 258–269. ACM Press, New York, NY, USA (2002)

  10. Dwyer M.B., Hatcliff J., Robby , Ranganath V.P.: Exploiting object escape and locking information in partial-order reductions for concurrent object-oriented programs. Formal Methods Syst. Des. 25(2–3), 199–240 (2004)

    Article  MATH  Google Scholar 

  11. Edelstein O., Farchi E., Goldin E., Nir Y., Ratsaby G., Ur S.: Framework for testing multi-threaded java programs. Concurr. Comput. Pract. Exp. 15(3–5), 485–499 (2003)

    Article  MATH  Google Scholar 

  12. Elmas T., Qadeer S., Tasiran S.: Goldilocks: a race and transaction-aware java runtime. SIGPLAN Not. 42, 245–255 (2007)

    Article  Google Scholar 

  13. Elmas, T., Qadeer, S., Tasiran, S.: Goldilocks: a race and transaction-aware java runtime. In: PLDI 07: Programming Language Design and Implementation, pp. 245–255 (2007)

  14. Elmas T., Qadeer S., Tasiran S.: Goldilocks: a race-aware java runtime. Commun. ACM 53, 85–92 (2010)

    Article  Google Scholar 

  15. Elmas, T., Tasiran, S., Qadeer, S.: VYRD: verifying concurrent programs by runtime refinement-violation detection. In: PLDI ’05: Proceedings of the 2005 ACM SIGPLAN conference on Programming Language Design and Implementation, pp. 27–37. ACM Press, New York, NY, USA (2005)

  16. Farzan, A., Madhusudan, P.: Causal atomicity. In: CAV: Computer Aided Verification, pp. 315–328 (2006)

  17. Farzan, A., Madhusudan, P.: Monitoring atomicity in concurrent programs. In: CAV 08: Computer Aided Verification, pp. 52–65 (2008)

  18. Flanagan C.: Verifying commit-atomicity using model-checking. In: Graf S., Mounier L (eds) . In: (eds) SPIN. Lecture Notes in Computer Science, vol. 2989, pp. 252–266. Springer, Berlin (2004)

    Google Scholar 

  19. Flanagan C., Freund S.N.: Atomizer: a dynamic atomicity checker for multithreaded programs. Sci. Comput. Program. 71(2), 89–109 (2008)

    Article  MATH  MathSciNet  Google Scholar 

  20. Flanagan C., Freund S.N., Qadeer S.: Exploiting purity for atomicity. IEEE Trans. Softw. Eng. 31(4), 275–291 (2005)

    Article  Google Scholar 

  21. Flanagan, C., Freund, S.N., Yi, J.: Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs. In: PLDI 08: Programming Language Design and Implementation, pp. 293–303 (2008)

  22. Flanagan, C., Qadeer, S.: A type and effect system for atomicity. In: PLDI ’03: Proceedings of the ACM SIGPLAN 2003 Conference on Programming language design and implementation, pp. 338–349. ACM Press, New York, NY, USA (2003)

  23. Gniady, C., Falsafi, B., Vijaykumar, T.N.: Is sc + ilp=rc?. In: ISCA, pp. 162–171 (1999)

  24. Godefroid P.: Partial-order methods for the verification of concurrent systems: an approach to the state-explosion problem, volume 1032. Springer, New York (1996)

    Book  Google Scholar 

  25. Godefroid, P.: Model checking for programming languages using Verisoft. In: POPL 97: Principles of Programming Languages, pp. 174–186. ACM Press, New York(1997)

  26. Herlihy M.P., Wing J.M.: Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12(3), 463–492 (1990)

    Article  Google Scholar 

  27. Hill M.D.: Multiprocessors should support simple memory-consistency models. IEEE Comput. 31, 28–34 (1998)

    Article  Google Scholar 

  28. Hwang G., Tai K., Hunag T.: Reachability testing: an approach to testing concurrent software. Int. J. Softw. Eng. Knowl. Eng. 5(4), 493–510 (1995)

    Article  Google Scholar 

  29. Iosif, R.: Exploiting heap symmetries in explicit-state model checking of software. In: ASE 01: Automated Software Engineering, pp. 254–261 (2001)

  30. Joshi, P., Naik, M., Park, C.-S., Sen, K.: An extensible active testing framework for concurrent programs. In: CAV 09: Computer Aided Verification (2009)

  31. Keremoglu, M., Tasiran, S., Elmas, T.: A classification of concurrency bugs in java benchmarks by developer intent. In: Proceedings of the 2006 workshop on Parallel and distributed systems: testing and debugging, PADTAD ’06, pp. 23–26. ACM, New York, NY, USA (2006)

  32. Killian, C.E., Anderson, J.W., Jhala, R., Vahdat, A.: Life, death, and the critical transition: finding liveness bugs in systems code. In: NSDI 07: Networked Systems Design and Implementation, pp. 243–256 (2007)

  33. Lamport L.: Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21(7), 558–565 (1978)

    Article  MATH  Google Scholar 

  34. Lamport L.: How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Comput. C 28(9), 690–691 (1979)

    Article  MATH  Google Scholar 

  35. Lei Y., Carver R.H.: Reachability testing of concurrent programs. IEEE Trans. Softw. Eng. 32(6), 382–403 (2006)

    Article  Google Scholar 

  36. Lipton R.J.: Reduction: a method of proving properties of parallel programs. Commun. ACM 18(12), 717–721 (1975)

    Article  MATH  MathSciNet  Google Scholar 

  37. Lu, S., Tucek, J., Qin, F., Zhou, Y.A.: detecting atomicity violations via access interleaving invariants. In: Proceedings of the 12th international conference on Architectural support for programming languages and operating systems ASPLOS-XII, pp. 37–48. ACM, New York, NY, USA (2006)

  38. Manson, J., Pugh, W., Adve, S.V.: The java memory model. In: POPL ’05: Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 378–391. ACM, New York, NY, USA (2005)

  39. Marino, D., Singh, A., Millstein, T., Musuvathi, M., Narayanasamy, S.: A case for an sc-preserving compiler. In: PLDI 11: Programming Language Design and Implementation (2011)

  40. Mattern, F.: Virtual time and global states of distributed systems. In: Parallel and Distributed Algorithms: Proceedings of the International Workshop on Parallel and Distributed Algorithms (1988)

  41. Musuvathi, M., Burckhardt, S., Kothari, P., Nagarakatte, S.: A randomized scheduler with probabilistic guarantees of finding bugs. In: ASPLOS: Architectural Support for Programming Languages and Operating Systems. ACM, New York (2010)

  42. Musuvathi, M., Park, D.Y.W., Chou, A., Engler, D.R., Dill, D.L.: Cmc: a pragmatic approach to model checking real code. In: OSDI (2002)

  43. Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: PLDI 07: Programming Language Design and Implementation, pp. 446–455 (2007)

  44. Musuvathi, M., Qadeer, S., Ball, T., Basler, G., Nainar, P.A., Neamtiu, I.: Finding and reproducing heisenbugs in concurrent programs. In: OSDI 08: Operating Systems Design and Implementation, pp. 267–280 (2008)

  45. Naik, M., Aiken, A., Whaley, J.: Effective static race detection for Java. In: PLDI ’06: Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation, pp. 308–319. ACM Press, New York, NY, USA (2006)

  46. Papadimitriou C.H.: The serializability of concurrent database updates. J. ACM 26(4), 631–653 (1979)

    Article  MATH  MathSciNet  Google Scholar 

  47. Park, S., Lu, S., Zhou, Y.: Ctrigger: exposing atomicity violation bugs from their hiding places. In: Proceeding of the 14th international conference on Architectural support for programming languages and operating systems, ASPLOS ’09, pp. 25–36. ACM, New York, NY, USA (2009)

  48. Raza A.: A review of race detection mechanisms. In: Grigoriev, D., Harrison, J., Hirsch, E. (eds) Computer Science Theory and Applications. Lecture Notes in Computer Science, vol. 3967, pp. 534–543. Springer, Berlin (2006)

    Google Scholar 

  49. Russell S., Norvig P.: Artificial Intelligence: A Modern Approach. Prentice Hall, Inc., Englewood Cliffs (2009)

    Google Scholar 

  50. Sadowski, C., Freund, S.N., Flanagan, C.: Singletrack: a dynamic determinism checker for multithreaded programs. In: ESOP, pp. 394–409 (2009)

  51. 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)

    Article  Google Scholar 

  52. Tasiran, S., Bogdanov, A., Ji, M.: Detecting concurrency errors in file systems by runtime refinement checking. Hewlett-Packard Laboratories technical report (HPL-2004-177) (2004)

  53. Tasiran S., Elmas T.: Rollback atomicity. In: Sokolsky, O., Tasiran, S. (eds) Runtime verification. Lecture Notes in Computer Science, vol. 4839, pp. 188–201. Springer, Berlin (2007)

    Google Scholar 

  54. Vaziri, M., Tip, F., Dolby, J.: Associating synchronization constraints with data in an object-oriented language. In: POPL ’06: Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 334–345. ACM, New York, NY, USA (2006)

  55. Vechev, M.T., Yahav, E., Yorsh, G.: Experience with model checking linearizability. In: SPIN Workshop on Model Checking of Software, pp. 261–278 (2009)

  56. Visser, W., Havelund, K., Brat, G., Park, S.-J.: Model checking programs. In: Proceedings of the 15th IEEE International Conference on Automated Software Engineering (2000)

  57. Wang, L., Stoller, S.D.: Accurate and efficient runtime detection of atomicity errors in concurrent programs. In: PPoPP ’06: Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming, pp. 137–146. ACM, New York, NY, USA (2006)

  58. Wang L., Stoller S.D.: Runtime analysis of atomicity for multi-threaded programs. IEEE Trans. Softw. Eng. 32, 93–110 (2006)

    Article  Google Scholar 

  59. Xu, M., Bodík, R., Hill, M.D.: A serializability violation detector for shared-memory server programs. In: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, PLDI ’05, pp. 1–14. ACM, New York, NY, USA (2005)

  60. Yu, Y., Rodeheffer, T., Chen, W.: Racetrack: efficient detection of data race conditions via adaptive tracking. In: SOSP 05: Symposium on Operating Systems Principles, pp. 221–234 (2005)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Serdar Tasiran.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Qadeer, S., Tasiran, S. Runtime verification of concurrency-specific correctness criteria. Int J Softw Tools Technol Transfer 14, 291–305 (2012). https://doi.org/10.1007/s10009-011-0210-1

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-011-0210-1

Keywords

Navigation