Abstract
Concurrency bugs are a well-documented topic in shared-memory programs including event-driven programs which handle asynchronous events. Asynchronous events introduce fine-grained concurrency into event-driven programs making them hard to be thoroughly tested and debugged. Unfortunately, previous taxonomies on concurrency bugs are not applicable to the debugging of event-driven programs or do not provide enough knowledge on event-driven concurrency bugs. This paper classifies the event-driven program models into low and high level based on event types and carefully examines and categorizes concurrency bug patterns in such programs. Additionally, we survey existing techniques to detect concurrency bugs in event-driven programs. To the best of our knowledge, this study provides the first detailed taxonomy on concurrency bugs in event-driven programs.
This research was supported by the MKE (The Ministry of Knowledge Economy), Korea, under the ITRC (Information Technology Research Center) support program supervised by the NIPA (National IT Industry Promotion Agency), NIPA-2011-C1090-1131-0007.
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
Audenaert, K.M.R., Levrouw, L.J.: Interrupt Replay: A Debugging Method for Parallel Programs with Interrupts. Microprocessors and Microsystems 18(10), 601–612 (1994)
Adya, A., Howell, J., Theimer, M., Bolosky, W.J., Douceur, J.R.: Cooperative Task Management without Manual Stack Management. In: Proceedings of the 2002 Usenix Annual Technical Conference, pages 14, USENIX (2002)
Baker, A., Lozano, J.: The Windows 2000 Device Driver Book: A Guide for Programmers, 2nd edn., pages 480. Prentice Hall (2009)
Corbet, J., Rubini, A., Kroah-Hartman, G.: Linux Device Drivers, 3rd edn., pages 640. O’Reilly Media (2009)
Dowd, M., McDonald, J., Schuh, J.: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities, 1st edn. Addison-Wesley Professional, Massachusetts (2006)
Erickson, J., Musuvathi, M., Burckhardt, S., Olynyk, K.: Effective Data-Race Detection for the Kernel. In: The 9th USENIX Conference on Operating Systems Design and Implementation (OSDI 2010). USENIX (2010)
Farchi, E., Nir, Y., Ur, S.: Concurrent Bug Patterns and How to Test Them. In: Parallel and Distributed Processing Symposium (IPDPS 2003), pp. 22–26. IEEE (2003)
Flanagan, C., Freund, S.N.: Atomizer: A Dynamic Atomicity Checker for Multithreaded Programs. ACM SIGPLAN Notices 39(1), 256–267 (2004)
Gay, D., Levis, P., Behren, R.V., Welsh, M., Brewer, E., Culler, D.: The nesC Language: A holistic Approach to Networked Embedded Systems. In: Programming Language Design and Implementation (PLDI 2003), pp. 1–11. ACM (2003)
Gracioli, G., Fischmeister, S.: Tracing Interrupts in Embedded Software. In: International Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES 2009), pp. 137–146. ACM (2009)
Higashi, M., Yamamoto, T., Hayase, Y., Ishio, T., Inoue, K.: An Effective Method to Control Interrupt Handler for Data Race Detection. In: 5th International Workshop on Automation of Software Test (AST 2010), pp. 79–86. ACM (2010)
Hill, J., Szewczyk, R., Woo, A., Hollar, S., Culler, D.E., Pister, K.S.J.: System Architecture Directions for Networked Sensors. In: Architectural Support for Programming Languages and Operating Systems, pp. 93–104. ACM (2000)
Lai, Z., Cheung, S.C., Chan, W.K.: Inter-Context Control-Flow and Data-Flow Test Adequacy Criteria for nesC Applications. In: The 16th International Symposium on Foundations of Software Engineering (SIGSOFT 2008/FSE-16), pp. 94–104. ACM (2008)
Lee, E.A.: The Problem with Threads. IEEE Computer 36(5), 33–42 (2006)
Leveson, N.G., Turner, C.S.: An Investigation of the Therac-25 Accidents. IEEE Computer 26(7), 18–41 (1993)
Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from Mistakes? A Comprehensive Study on Real World Concurrency Bug Characteristics. In: International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2008), pp. 329–339. ACM (2008)
Li, Z., Lin, T., Wang, X., Lu, S., Zhou, Y., Zhai, C.: Have Things Changed Now? - An Empirical Study of Bug Characteristics in Modern Open Source Software. In: The 9th Asian Symposium on Information Display (ASID 2006), pp. 25–33. ACM (2006)
Ousterhout, J.K.: Why Threads are a Bad Idea (for most purposes). In: Invited talk at the 1996 USENIX Technical Conference. USENIX (1996)
Regehr, J.: Random Testing of Interrupt-Driven Software. In: International Conference on Embedded Software (EMSOFT 2005), pp.290–298. ACM (2005)
Regehr, J., Cooprider, N.: Interrupt Verification via Thread Verification. Electronic Notes in Theoretical Computer Science 174, 139–150 (2007)
Regehr, J., Reid, A., Webb, K.: Eliminating Stack Overflow by Abstract Interpretation. ACM Transactions on Embedded Computing Systems 4(4), 751–778 (2005)
Ronsse, M., Maebe, J., De Bosschere, K.: Detecting Data Races in Sequential Programs with DIOTA. In: Danelutto, M., Vanneschi, M., Laforenza, D. (eds.) Euro-Par 2004. LNCS, vol. 3149, pp. 82–89. Springer, Heidelberg (2004)
Ryzhyk, L., Chubb, P., Kuz, I., Heiser, G.: Dingo: Taming Device Drivers. In: The 4th ACM European Conference on Computer Systems (EuroSys 2009), pp. 275–288. ACM (2009)
Sahoo, S.K., Criswell, J., Adve, V.: An Empirical Study of Reported Bugs in Server Software with Implications for Automated Bug Diagnosis. In: The International Conference on Software Engineering (ICSE 2010), pp. 485–494. ACM (2010)
Sundaram, V., Eugster, P., Zhang, X.: Lightweight Tracing for Wireless Sensor Networks Debugging. In: The Workshop on Middleware Tools, Services and Run-Time Support for Sensor Networks (MidSens 2009), pp. 13–18. ACM (2009)
Tahara, T., Gondow, K., Ohsuga, S.: Dracula: Detector of Data Races in Signals Handlers. In: The 15th IEEE Asia-Pacific Software Engineering Conference (APSEC 2008), pp. 17–24. IEEE (2008)
Tchamgoue, G.M., Ha, O.-K., Kim, K.-H., Jun, Y.-K.: Lightweight Labeling Scheme for On-the-fly Race Detection of Signal Handlers. In: Kim, T.-h., Adeli, H., Robles, R.J., Balitanas, M. (eds.) UCMA 2011, Part II. CCIS, vol. 151, pp. 201–208. Springer, Heidelberg (2011)
Zhang, W., Lim, J., Olichandran, R., Scherpelz, J., Jin, G.: ConSeq: Detecting Concurrency Bugs through Sequential Errors. ACM SIGPLAN Notices 46(3), 251–264 (2011)
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
Tchamgoue, G.M., Ha, OK., Kim, KH., Jun, YK. (2011). A Taxonomy of Concurrency Bugs in Event-Driven Programs. 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_48
Download citation
DOI: https://doi.org/10.1007/978-3-642-27207-3_48
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)