Abstract
Data races are one of the most notorious concurrency bugs in explicitly shared-memory programs including concurrent interrupt handlers, because these bugs are hard to reproduce and lead to unintended nondeterministic executions of the program. The previous tool for detecting races in concurrent interrupt handlers converts each original handler into a corresponding thread to use existing techniques that detect races in multi-threaded programs. Unfortunately, this tool reports too many false positives, because it uses a static technique for detecting races. This paper presents a program conversion tool that translates the program to be debugged into a semantically equivalent multi-threaded program considering real-time scheduling policies and interrupt priorities of processor. And then, we detect races in the converted programs using a dynamic tool which detects races in multi-threaded programs. To evaluate this tool, we used two flight control programs for unmanned aerial vehicle. The previous approach reported two and three false positives in these programs, respectively, while our approach did not report any false positive.
This research was performed as a part of R&D program Air-BEST (Airborne Embedded System and Technology) funded by MKE (Ministry of Knowledge and Economy). This research was financially supported by the Ministry of Education, Science Technology (MEST) and National Research Foundation of Korea (NRF) through the Human Resource Training Project for Regional Innovation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Jannesari, A., Bao, K., Pankratius, V., Tichy, W.F.: Helgrind+: An efficient dynamic race detector. In: Proceedings of the 2009 IEEE International Symposium on Parallel Distributed Processing, pp. 1–13. IEEE Computer Society Press, Washington, DC, USA (2009)
Banerjee, U., Bliss, B., Ma, Z., Petersen, P.: A theory of data race detection. In: Proceedings of the 2006 Workshop on Parallel and Distributed Systems: Testing and Debugging, PADTAD 2006, pp. 69–78. ACM, New York (2006)
Butenhof, D.R.: Programming with posix threads. Addison-Wesley Professional (1997)
Dinning, A., Schonberg, E.: Detecting access anomalies in programs with critical sections. In: Proceedings of the 1991 ACM/ONR Workshop on Parallel and Distributed Debugging, PADD 1991, pp. 85–96. ACM, New York (1991)
Edelstein, O., Farchi, E., Nir, Y., Ratsaby, G., Ur, S.: Multithreaded java program test generation. In: Proceedings of the 2001 Joint ACM-ISCOPE Conference on Java Grande, JGI 2001. ACM, New York (2001)
Jannesari, A., Tichy, W.F.: On-the-fly race detection in multi-threaded programs. In: Proceedings of the 6th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging, PADTAD, pp. 6:1–6:10. ACM, New York (2008)
Labrosse, J.J.: Microc/os-ii the real-time kernel, 2nd edn., pp. 32–66. CMP Books (2002)
Lamport, L.: Time, clocks, and the ordering of events in a distributed system. Communications of ACM, 558–565 (1978)
Le, W., Yang, J., Soffa, M.L., Whitehouse, K.: Lazy preemption to enable path-based analysis of interrupt-driven code. In: Proceeding of the 2nd Workshop on Software Engineering for Sensor Network Applications, SESENA 2011, pp. 43–48. ACM, New York (2011)
Netzer, R.H.B., Miller, B.P.: What are race conditions?: Some issues and formalizations. ACM Lett. Program. Lang. Syst. 1, 74–88 (1992)
Park, S.H., Park, M.Y., Jun, Y.K.: A Comparison of Scalable Labeling Schemes for Detecting Races in OpenMP Programs. In: Eigenmann, R., Voss, M.J. (eds.) WOMPAT 2001. LNCS, vol. 2104, pp. 68–80. Springer, Heidelberg (2001)
Pessanha, V., Dias, R.J., Lourenço, J.A.M., Farchi, E., Sousa, D.: Practical verification of high-level dataraces in transactional memory programs. In: Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging, PADTAD 2011, pp. 26–34. ACM, New York (2011)
Pratikakis, P., Foster, J.S., Hicks, M.: Locksmith: context-sensitive correlation analysis for race detection. SIGPLAN Not. 41, 320–331 (2006)
Regehr, J., Cooprider, N.: Interrupt verification via thread verification. Electron. Notes Theor. Comput. Sci. 174, 139–150 (2007)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: a dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst. 15, 391–411 (1997)
Tahara, T., Gondow, K., Ohsuga, S.: Dracula: Detector of data races in signals handlers. In: Asia-Pacific Software Engineering Conference, pp. 17–24 (2008)
Valgrind-project: Helgrind: a data-race detector (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lee, BK., Kang, MH., Park, K.C., Yi, J.S., Yang, S.W., Jun, YK. (2011). Program Conversion for Detecting Data Races in Concurrent Interrupt Handlers. In: Kim, Th., et al. Software Engineering, Business Continuity, and Education. ASEA 2011. Communications in Computer and Information Science, vol 257. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-27207-3_45
Download citation
DOI: https://doi.org/10.1007/978-3-642-27207-3_45
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-27206-6
Online ISBN: 978-3-642-27207-3
eBook Packages: Computer ScienceComputer Science (R0)