Abstract
Finding concurrency bugs is hard because of two reasons. Reconstruction of concurrency-specific software properties from source code or binary is an NP-hard problem, and some information might not be present in the software implementation at all (e.g., intentions of synchronisation). Existing approaches for finding concurrency bugs use over-approximating analyses and testing, but these respectively often lead to potential false warnings or fail to report some concurrency bugs. Without knowledge of concurrency properties (memory locations shared between threads and used synchronisation mechanisms), it is hard to complement existing analyses and make their output more precise. Furthermore, choosing a testing tool without knowledge of concurrency-specific software properties is also a challenge and can result in big overhead.
Therefore, in this paper we present a light-weight approach that forces developers to plan and document decisions about used synchronisation mechanisms during development. The approach is implemented as part of Agile SCRUM framework. Documented concurrency-related decisions are used to choose adequate testing tools and improve their precision.
This work was supported by the Engineering and Physical Sciences Research Council (EPSRC) through grant reference EP/P020011/1.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
According to ACM template for Questionnaire Surveys - www.acmsigsoft.github.io/EmpiricalStandards/docs/?standard=QuestionnaireSurveys.
References
Abbaspour Asadollah, S., Sundmark, D., Eldh, S., Hansson, H.: Concurrency bugs in open source software: a case study. J. Internet Serv. Appl. 8(1), 4 (2017)
Arora, V., Bhatia, R., Singh, M.: A systematic review of approaches for testing concurrent programs. Concurr. Comput. Pract. Exp. 28(5), 1572–1611 (2016)
Balakrishnan, G., et al.: Scalable and precise program analysis at NEC. In: Formal Methods in Computer Aided Design, pp. 273–274 (2010)
Bianchi, F., Margara, A., Pezze, M.: A survey of recent trends in testing concurrent software systems. IEEE Trans. Softw. Eng. 44, 747–783 (2017)
Choi, S.E., Lewis, E.C.: A study of common pitfalls in simple multi-threaded programs. SIGCSE Bull. 32(1), 325–329 (2000). https://doi.org/10.1145/331795.331879
Dinning, A., Schonberg, E.: Detecting access anomalies in programs with critical sections. SIGPLAN Not. 26(12), 85–96 (1991). https://doi.org/10.1145/127695.122767
Durkin, T.: What the media couldn’t tell you about the mars pathfinder. Robot Sci. Technol. 1(1), 3 (1998)
Havelund, K., Goldberg, A.: Verify Your Runs. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-69149-5_40
Hong, S., Kim, M.: A survey of race bug detection techniques for multithreaded programmes. Softw. Test. Verif. Reliabil. 25(3), 191–217. https://doi.org/10.1002/stvr.1564, https://onlinelibrary.wiley.com/doi/abs/10.1002/stvr.1564
Jahić, J., Ali, K., Chatrangoon, M., Jahani, N.: (dis)advantages of lock-free synchronization mechanisms for multicore embedded systems. In: Proceedings of the 48th International Conference on Parallel Processing: Workshops, ICPP 2019. Association for Computing Machinery, New York (2019)
Jahić, J., Bauer, T., Kuhn, T., Wehn, N., Antonino, P.O.: FERA: a framework for critical assessment of execution monitoring based approaches for finding concurrency bugs. In: Arai, K., Kapoor, S., Bhatia, R. (eds.) SAI 2020. AISC, vol. 1228, pp. 54–74. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-52249-0_5
Jahic, J., Jung, M., Kuhn, T., Kestel, C., Wehn, N.: A framework for non-intrusive trace-driven simulation of manycore architectures with dynamic tracing configuration. In: Colombo, C., Leucker, M. (eds.) RV 2018. LNCS, vol. 11237, pp. 458–468. Springer, Cham (2018). https://doi.org/10.1007/978-3-030-03769-7_28
Jahić, J., Kuhn, T., Jung, M., Wehn, N.: Bosmi: a framework for non-intrusive monitoring and testing of embedded multithreaded software on the logical level. In: Proceedings of the 18th International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation, SAMOS 2018, pp. 131–138. Association for Computing Machinery, New York (2018)
Jahić, J., Kumar, V., Antonino, P.O., Wirrer, G.: Testing the implementation of concurrent autosar drivers against architecture decisions. In: 2019 IEEE International Conference on Software Architecture (ICSA), pp. 171–180 (2019)
Jannesari, A., Tichy, W.F.: Identifying ad-hoc synchronization for enhanced race detection. In: 2010 IEEE International Symposium on Parallel Distributed Processing (IPDPS), pp. 1–10 (2010). https://doi.org/10.1109/IPDPS.2010.5470343
Karran, B., Trümper, J., Döllner, J.: Synctrace: visual thread-interplay analysis. In: First IEEE Working Conference on Software Visualization (VISSOFT), pp. 1–10. IEEE, Eindhoven (2013)
Keul, S.: Tuning static data race analysis for automotive control software. In: 2011 IEEE 11th International Working Conference on Source Code Analysis and Manipulation, pp. 45–54 (2011)
Lattner, C., Adve, V.: Llvm: a compilation framework for lifelong program analysis amp; transformation. In: International Symposium on Code Generation and Optimization, 2004, CGO 2004, pp. 75–86 (2004). https://doi.org/10.1109/CGO.2004.1281665
Lee, E.A.: The problem with threads. Computer 39(5), 33–42 (2006)
Lu, S., Tucek, J., Qin, F., Zhou, Y.: Avio: detecting atomicity violations via access-interleaving invariants. IEEE Micro 27(1), 26–35 (2007)
Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. SIGOPS Oper. Syst. Rev. 42(2), 329–339 (2008)
May, J., Berman, F.: Creating views for debugging parallel programs. In: IEEE Scalable High Performance Computing Conference (SHPCC), pp. 833–840. IEEE, Knoxville (1994)
Miné, A., et al.: Taking static analysis to the next level: proving the absence of run-time errors and data races with astrée. In: 8th European Congress on Embedded Real Time Software and Systems (ERTS 2016), Toulouse, France (2016). https://hal.archives-ouvertes.fr/hal-01271552
Nethercote, N., Seward, J.: Valgrind: A framework for heavyweight dynamic binary instrumentation. In: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2007, pp. 89–100. Association for Computing Machinery, New York (2007). https://doi.org/10.1145/1250734.1250746, https://doi.org/10.1145/1250734.1250746
Netzer, R.H.B., Miller, B.P.: What are race conditions?: some issues and formalizations. ACM Lett. Program. Lang. Syst. 1(1), 74–88 (1992)
Netzer, R.H., Miller, B.P.: On the complexity of event ordering for shared-memory parallel program executions. In: In Proceedings of the 1990 International Conference on Parallel Processing, pp. 93–97 (1990)
Rubin, K.S.: Essential Scrum: A Practical Guide to the Most Popular Agile Process, 1st edn. Addison-Wesley Professional, Boston (2012)
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)
Schwaber, K., Sutherland, J.: The scrum guide (2020). https://scrumguides.org/scrum-guide.html. Accessed 19 Apr 2021
Serebryany, K., Iskhodzhanov, T.: Threadsanitizer: data race detection in practice. In: Proceedings of the Workshop on Binary Instrumentation and Applications, WBIA, pp. 62–71. Association for Computing Machinery, New York (2009)
Souza, S.R.S., Brito, M.A.S., Silva, R.A., Souza, P.S.L., Zaluska, E.: Research in concurrent software testing: a systematic review. In: Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging, PADTAD 2011, pp. 1–5. ACM, New York (2011)
Stasko, J.T., Kraemer, E.: A methodology for building application-specific visualizations of parallel programs. J. Para. Distrib. Comput. 18(2), 258–264 (1993)
Wilhelm, A., Čakarić, F., Gerndt, M., Schuele, T.: Tool-based interactive software parallelization: a case study. In: The 40th International Conference on Software Engineering: Software Engineering in Practice, pp. 115–123. Association for Computing Machinery (ACM), Gothenburg (2018)
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Jahić, J., Doganci, V., Gehring, H. (2022). CASA: An Approach for Exposing and Documenting Concurrency-Related Software Properties. In: Orailoglu, A., Reichenbach, M., Jung, M. (eds) Embedded Computer Systems: Architectures, Modeling, and Simulation. SAMOS 2022. Lecture Notes in Computer Science, vol 13511. Springer, Cham. https://doi.org/10.1007/978-3-031-15074-6_9
Download citation
DOI: https://doi.org/10.1007/978-3-031-15074-6_9
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-15073-9
Online ISBN: 978-3-031-15074-6
eBook Packages: Computer ScienceComputer Science (R0)