Skip to main content

A Taxonomy of Concurrency Bugs in Event-Driven Programs

  • Conference paper
Software Engineering, Business Continuity, and Education (ASEA 2011)

Part of the book series: Communications in Computer and Information Science ((CCIS,volume 257))

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.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

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

    Article  Google Scholar 

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

    Google Scholar 

  3. Baker, A., Lozano, J.: The Windows 2000 Device Driver Book: A Guide for Programmers, 2nd edn., pages 480. Prentice Hall (2009)

    Google Scholar 

  4. Corbet, J., Rubini, A., Kroah-Hartman, G.: Linux Device Drivers, 3rd edn., pages 640. O’Reilly Media (2009)

    Google Scholar 

  5. Dowd, M., McDonald, J., Schuh, J.: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities, 1st edn. Addison-Wesley Professional, Massachusetts (2006)

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  8. Flanagan, C., Freund, S.N.: Atomizer: A Dynamic Atomicity Checker for Multithreaded Programs. ACM SIGPLAN Notices 39(1), 256–267 (2004)

    Article  MATH  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  14. Lee, E.A.: The Problem with Threads. IEEE Computer 36(5), 33–42 (2006)

    Article  Google Scholar 

  15. Leveson, N.G., Turner, C.S.: An Investigation of the Therac-25 Accidents. IEEE Computer 26(7), 18–41 (1993)

    Article  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  18. Ousterhout, J.K.: Why Threads are a Bad Idea (for most purposes). In: Invited talk at the 1996 USENIX Technical Conference. USENIX (1996)

    Google Scholar 

  19. Regehr, J.: Random Testing of Interrupt-Driven Software. In: International Conference on Embedded Software (EMSOFT 2005), pp.290–298. ACM (2005)

    Google Scholar 

  20. Regehr, J., Cooprider, N.: Interrupt Verification via Thread Verification. Electronic Notes in Theoretical Computer Science 174, 139–150 (2007)

    Article  Google Scholar 

  21. Regehr, J., Reid, A., Webb, K.: Eliminating Stack Overflow by Abstract Interpretation. ACM Transactions on Embedded Computing Systems 4(4), 751–778 (2005)

    Article  Google Scholar 

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

    Chapter  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Chapter  Google Scholar 

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

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics