Skip to main content
Log in

Dynamic Analysis Method for Concurrency Bugs in Multi-process/Multi-thread Environments

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

In this paper, we propose a method of analyzing the types and causes of concurrency bugs that can occur in multi-process/multi-thread environments by analyzing the information gathered in the execution environment. Our method reduces the false detection rate by employing a hooking technique that intercepts the software’s execution at runtime and reduces the overhead that can occur in the original software due to defect detection methods using optimized data collection. We implemented the proposed method as a tool and demonstrated its effectiveness by applying it to weapon system software that previously had concurrency bugs. In addition, the proposed method’s high performance was proven by applying it to software into which faults were injected and comparing the results with those obtained using other tools.

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

Access this article

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

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17

Similar content being viewed by others

References

  1. Gao, J., Yang, X., Jiang, Y., Liu, H., Ying, W., Zhang, X.: Jbench: a dataset of data races for concurrency testing. In: Proceedings of the 15th International Conference on Mining Software Repositories (MSR ’18). ACM, New York, NY, USA, pp. 6–9 (2018). https://doi.org/10.1145/3196398.3196451

  2. Park, J., Choi, B.: Analysis on dynamic software defects for increasing weapon system reliability. KIPS Trans. Softw. Data Eng. 7(7), 249–258 (2018). https://doi.org/10.3745/KTSDE.2018.7.7.249

    Article  Google Scholar 

  3. Haojie, F., Wang, Z., Chen, X., Fan, X.: A systematic survey on automated concurrency bug detection, exposing, avoidance, and fixing techniques. Softw. Qual. J. 26(3), 855–889 (2018). https://doi.org/10.1007/s11219-017-9385-3

    Article  Google Scholar 

  4. Leveson, N.G., Turner, C.S.: An investigation of the Therac-25 accidents. Computer 26(7), 18–41 (1993). https://doi.org/10.1109/MC.1993.274940

    Article  Google Scholar 

  5. Zhu, Y., Li, Y., Xue, J., Tan, T., Shi, J., Shen, Y., Ma, C.: What is system hang and how to handle it. In: Proceedings of the 23rd International Symposium on Software Reliability Engineering, pp. 27–30 (2012). https://doi.org/10.1109/ISSRE.2012.12

  6. Chandy, K.M., Misra, J., Haas, L.M.: Distributed deadlock detection. ACM Trans. Comput. Syst. (TOCS) 1(2), 144–156 (1983)

    Article  Google Scholar 

  7. Park, S., Lu, S., Zhou, Y.: CTrigger: exposing atomicity violation bugs from their hiding places. ACM SIGARCH Comput. Archit. News 37(1), 25–36 (2009). https://doi.org/10.1145/2528521.1508249

    Article  Google Scholar 

  8. Olszewski, M., Ansel, J., Amarasinghe, S.: Kendo: efficient deterministic multithreading in software. ACM Sigplan Not. 44(3), 97–108 (2009)

    Article  Google Scholar 

  9. Voung, J.W., Jhala, R., Lerner, S.: Relay: static race detection on millions of lines of code. In: 15th ACM SIGSOFT International Symposium on Foundations of software engineering (FSE 2007), pp. 205–214 (2007)

  10. Engler, D.R., Ashcraft, K.: Racerx: effective, static detection of race conditions and deadlocks. In: Proceedings of the 19th ACM symposium on Operating systems principles (SOSP 2003), pp. 237–252 (2003)

  11. Tan, L., Zhou, Y., Padioleau, Y.: aComment: mining annotations from comments and code to detect interrupt related concurrency bugs. In: Proceedings of the 33rd international conference on software engineering. ACM (2011)

  12. Choudhary, A., Lu, S., Pradel, M.: Efficient detection of thread safety violations via coverage-guided generation of concurrent tests. In: Proceedings of the 39th International Conference on Software Engineering. IEEE Press, pp. 266–277 (2017)

  13. Patent: System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels, US 7,773,618 B2, Aug, 10 (2010)

  14. Choi, Y., Kwon, J., Jeong, S., Park, H., Eom, Y.I.k.: Lightweight deadlock detection technique for embedded systems via OS-level analysis: work-in-progress. In: Proceedings of the International Conference on Embedded Software, p. 2. IEEE Press (2018)

  15. Bensalem S, Havelund K:. Scalable deadlock analysis of multithreaded programs. In: Proceedings of the Parallel and Distributed Systems: Testing and Debugging (PADTAD) Track of the 2005 IBM Verification Conference. Springer (2005)

  16. Li, T., Ellis, C.S., Lebeck, A.R., Sorin, D.J.: Pulse: a dynamic deadlock detection mechanism using speculative execution. In: USENIX Annual Technical Conference, General Track, vol. 44 (2005)

  17. Jula, H., Tralamazza, D., Zamfir, C., Candea, G.: Deadlock immunity: enabling systems to defend against deadlocks. In: Proceedings of the 8th USENIX conference on Operating systems design and implementation, pp. 295–308. USENIX Association (2008)

  18. Zhou, J., Silvestro, S., Liu, H., Cai, Y., Liu, T.: NDEAD: detecting and preventing deadlocks in production software. In: Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, pp. 729–740. IEEE Press (2017)

  19. Bensalem, S., Fernandez, J.-C., Havelund, K., Mounier, L.: Confirmation of deadlock potentials detected by runtime analysis. In: Proceedings of the 2006 Workshop on Parallel and Distributed Systems: Testing and Debugging, pp. 41–50. ACM (2006)

  20. Joshi, P., Park, C.-S., Sen, K., Naik, M.: A randomized dynamic program analysis technique for detecting real deadlocks. ACM Sigplan Not. 44(6), 110–120 (2009). ACM

    Article  Google Scholar 

  21. DeLozier, C., Eizenberg, A., Lucia, B., Devietti, J.: SOFRITAS: serializable ordering-free regions for increasing thread atomicity scalably. In: Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 286–300. ACM (2018)

  22. IEEE Std 610.12-1990, IEEE Standard Glossary of Software Engineering Terminology

  23. JooyoungSeo, B.C., Yang, S.: A profiling method by PCB hooking and its application for memory fault detection in embedded system operational test. Inf. Softw. Technol. 53(1), 106–119 (2011)

    Article  Google Scholar 

  24. BRL-CAD, BRL-CAD:Open Source Solid Modeling. https://brlcad.org. Accessed 13 Nov 2019

  25. Mozilla-NSPR, Netscape Portable Runtime. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR. Accessed 13 Nov 2019

  26. odroid-XU4, Odroid. https://www.hardkernel.com. Accessed 13 Nov 2019

  27. SQLite3, SQLite3. http://sqlite3.org. Accessed 13 Nov 2019

  28. ECO_ConBench, ECO_ConBench. https://github.com/EwhaSelab/ECO_ConBench. Accessed 13 Nov 2019

  29. Helgrind: A Thread Error Detector. http://valgrind.org/docs/manual/hg-manual.html. Accessed 13 Nov 2019

  30. DRD, A Thread Error Detector. http://valgrind.org/docs/manual/drd-manual.html. Accessed 13 Nov 2019

  31. Kusano, M., Wang, C.: CCmutator: A mutation generator for concurrency constructs in multithreaded C/C++ applications. In: Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering, pp. 722–725. IEEE Press (2013)

  32. Sen, A.: Mutation operators for concurrent SystemC designs. In: 2009 10th International Workshop on Microprocessor Test and Verification, pp. 27–31. IEEE (2009)

  33. CWE, Common Weakness Enumeration. https://cwe.mitre.org. Accessed 13 Nov 2019

Download references

Acknowledgements

This research was supported by the Hyundai-Kia Motor Company. This research was supported by the MSIT (Ministry of Science and ICT), Korea, under the ITRC (Information Technology Research Center) support program (IITP-2020-2017-0-01628) supervised by the IITP (Institute for Information & communications Technology Promotion).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Byoungju Choi.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Park, J., Choi, B. & Jang, S. Dynamic Analysis Method for Concurrency Bugs in Multi-process/Multi-thread Environments. Int J Parallel Prog 48, 1032–1060 (2020). https://doi.org/10.1007/s10766-020-00661-3

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10766-020-00661-3

Keywords

Navigation