skip to main content
research-article
Open Access

Actor concurrency bugs: a comprehensive study on symptoms, root causes, API usages, and differences

Published:13 November 2020Publication History
Skip Abstract Section

Abstract

Actor concurrency is becoming increasingly important in the development of real-world software systems. Although actor concurrency may be less susceptible to some multithreaded concurrency bugs, such as low-level data races and deadlocks, it comes with its own bugs that may be different. However, the fundamental characteristics of actor concurrency bugs, including their symptoms, root causes, API usages, examples, and differences when they come from different sources are still largely unknown. Actor software development can significantly benefit from a comprehensive qualitative and quantitative understanding of these characteristics, which is the focus of this work, to foster better API documentation, development practices, testing, debugging, repairing, and verification frameworks. To conduct this study, we take the following major steps. First, we construct a set of 186 real-world Akka actor bugs from Stack Overflow and GitHub via manual analysis of 3,924 Stack Overflow questions, answers, and comments and 3,315 GitHub commits, messages, original and modified code snippets, issues, and pull requests. Second, we manually study these actor bugs and their fixes to understand and classify their symptoms, root causes, and API usages. Third, we study the differences between the commonalities and distributions of symptoms, root causes, and API usages of our Stack Overflow and GitHub actor bugs. Fourth, we discuss real-world examples of our actor bugs with these symptoms and root causes. Finally, we investigate the relation of our findings with those of previous work and discuss their implications. A few findings of our study are: (1) symptoms of our actor bugs can be classified into five categories, with Error as the most common symptom and Incorrect Exceptions as the least common, (2) root causes of our actor bugs can be classified into ten categories, with Logic as the most common root cause and Untyped Communication as the least common, (3) a small number of Akka API packages are responsible for most of API usages by our actor bugs, and (4) our Stack Overflow and GitHub actor bugs can differ significantly in commonalities and distributions of their symptoms, root causes, and API usages. While some of our findings agree with those of previous work, others sharply contrast.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

Actor concurrency is becoming increasingly important in the development of real-world software systems. Although actor concurrency may be less susceptible to some multithreaded concurrency bugs, such as low-level data races and deadlocks, it comes with its own bugs that may be different. However, the fundamental characteristics of actor concurrency bugs, including their symptoms, root causes, API usages, examples, and differences when they come from different sources are still largely unknown. Actor software development can significantly benefit from a comprehensive qualitative and quantitative understanding of these characteristics, which is the focus of this work, to foster better API documentation, development practices, testing, debugging, repairing, and verification frameworks.

References

  1. Stack Overflow. 2012a. Akka Actors app hangs under high volume. https://stackoverflow.com/questions/11141311.Google ScholarGoogle Scholar
  2. Stack Overflow. 2012b. correctly terminate akka actors in scala. https://stackoverflow.com/questions/12324055/.Google ScholarGoogle Scholar
  3. GitHub. 2013a. ifx garbling of big Tcp.Write. https://github.com/spray/spray/commit/ 332ba626b193794fd4d753839e664aacd4d302a5.Google ScholarGoogle Scholar
  4. Stack Overflow. 2013. How should an akka actor be created that might throw an exception? https://stackoverflow.com/ questions/18648390.Google ScholarGoogle Scholar
  5. GitHub. 2013b. Spray Project. https://github.com/spray/spray/commit/e34da115fa43d4d46db0e7ae06eea7fbcbc4fdfd.Google ScholarGoogle Scholar
  6. Stack Overflow. 2014. akka.io dispatcher configuration Exception. https://stackoverflow.com/questions/21686327.Google ScholarGoogle Scholar
  7. Stack Overflow. 2016. postRestart and preRestart methods are not getting invoked in akka actors. https://stackoverflow. com/questions/37608915.Google ScholarGoogle Scholar
  8. Stack Overflow. 2017a. Actor Name is not Unique InvalidActorNameException. https://stackoverflow.com/questions/ 11693562/.Google ScholarGoogle Scholar
  9. Stack Overflow. 2017b. Doesn't immediately stop child Akka actors when parent actor stopped. https://stackoverflow.com/ questions/45574085.Google ScholarGoogle Scholar
  10. Stack Overflow. 2017c. How to use futures with Akka for asynchronous results. https://stackoverflow.com/questions/ 11693562/.Google ScholarGoogle Scholar
  11. Stack Overflow. 2018a. Cannot establish remote communication with Akka. https://stackoverflow.com/questions/53188945.Google ScholarGoogle Scholar
  12. Stack Overflow. 2018b. Scala Akka Actor-Dead Letters encountered. https://stackoverflow.com/questions/53200356.Google ScholarGoogle Scholar
  13. Stack Overflow. 2018c. Send message to actor after restart from Supervisor. https://stackoverflow.com/questions/48446194.Google ScholarGoogle Scholar
  14. Stack Overflow. 2019. Akka Routing: Reply's send to router ends up as dead letters. https://stackoverflow.com/questions/ 20564381/.Google ScholarGoogle Scholar
  15. Gul Agha. 1986. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Gul Agha and Carl Hewitt. 1985. Concurrent Programming Using Actors: Exploiting Large-Scale Parallelism. In Proceedings of the Fifth Conference on Foundations of Software Technology and Theoretical Computer Science. Springer-Verlag, Berlin, Heidelberg, 19-41.Google ScholarGoogle ScholarCross RefCross Ref
  17. Syed Ahmed and Mehdi Bagherzadeh. 2018. What Do Concurrency Developers Ask about? A Large-Scale Study Using Stack Overflow. In Proceedings of the 12th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (Oulu, Finland) (ESEM '18). Association for Computing Machinery, New York, NY, USA, Article 30, 10 pages. https://doi.org/10.1145/3239235.3239524 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Akka 2.6.5 API. May 2020. https://doc.akka.io/api/akka/current/akka/index.html.Google ScholarGoogle Scholar
  19. Akka Actor Reference Config. April 2020. https://github.com/akka/akka/blob/master/akka-actor/src/main/resources/ reference.conf.Google ScholarGoogle Scholar
  20. Akka Typed. May 2020. https://doc.akka.io/docs/akka/current/typed/index.html.Google ScholarGoogle Scholar
  21. Apache. 2015. Akka Actors in Spark. https://issues.apache.org/jira/browse/SPARK-5293.Google ScholarGoogle Scholar
  22. Joe Armstrong. 2007. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Mehdi Bagherzadeh and Rafi Khatchadourian. 2019. Going Big: A Large-Scale Study on What Big Data Developers Ask. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (Tallinn, Estonia) (ESEC/FSE 2019 ). Association for Computing Machinery, New York, NY, USA, 432-442. https://doi.org/10.1145/3338906.3338939 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Mehdi Bagherzadeh and Hridesh Rajan. 2015. Panini: A Concurrent Programming Model for Solving Pervasive and Oblivious Interference. In Proceedings of the 14th International Conference on Modularity (Fort Collins, CO, USA) ( MODULARITY 2015). ACM, New York, NY, USA, 93-108. https://doi.org/10.1145/2724525.2724568 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Mehdi Bagherzadeh and Hridesh Rajan. 2017. Order Types: Static Reasoning About Message Races in Asynchronous Message Passing Concurrency. In Proceedings of the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control (Vancouver, BC, Canada) ( AGERE 2017). ACM, New York, NY, USA, 21-30. https://doi.org/10.1145/3141834.3141837 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Thomas Ball, Mayur Naik, and Sriram K. Rajamani. 2003. From Symptom to Cause: Localizing Errors in Counterexample Traces. In Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (New Orleans, Louisiana, USA) ( POPL '03). Association for Computing Machinery, New York, NY, USA, 97-105. https: //doi.org/10.1145/604131.604140 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Anton Barua, Stephen W. Thomas, and Ahmed E. Hassan. 2014. What Are Developers Talking About? An Analysis of Topics and Trends in Stack Overflow. Empirical Softw. Engg. 19, 3 ( June 2014 ), 619-654. https://doi.org/10.1007/s10664-012-9231-y Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Phil Bernstein, Sergey Bykov, Alan Geller, Gabriel Kliot, and Jorgen Thelin. 2014. Orleans: Distributed Virtual Actors for Programmability and Scalability. Technical Report MSR-TR-2014-41. https://www.microsoft.com/en-us/research/ publication/orleans-distributed-virtual-actors-for-programmability-and-scalability/Google ScholarGoogle Scholar
  29. Pamela Bhattacharya, Iulian Neamtiu, and Christian R. Shelton. 2012. Automated, Highly-Accurate, Bug Assignment Using Machine Learning and Tossing Graphs. J. Syst. Softw. 85, 10 (Oct. 2012 ), 2275-2292. https://doi.org/10.1016/j.jss. 2012. 04. 053 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Francesco Adalberto Bianchi, Alessandro Margara, and Mauro Pezze. 2018. A Survey of Recent Trends in Testing Concurrent Software Systems. IEEE Trans. Softw. Eng. 44, 8 (Aug. 2018 ), 747-783. https://doi.org/10.1109/TSE. 2017.2707089 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Sumon Biswas, Md Johirul Islam, Yijia Huang, and Hridesh Rajan. 2019. Boa Meets Python: A Boa Dataset of Data Science Software in Python Language. In Proceedings of the 16th International Conference on Mining Software Repositories (Montreal, Quebec, Canada) ( MSR '19). IEEE Press, 577-581. https://doi.org/10.1109/MSR. 2019. 00086 ( ICSE '20). IEEE Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Khari Johnson. 2018. GitHub passes 100 million repositories. https://venturebeat.com/ 2018 /11/08/github-passes-100-millionrepositories/.Google ScholarGoogle Scholar
  33. Rafi Khatchadourian, Johan Dovland, and Neelam Soundarajan. 2008. Enforcing Behavioral Constraints in Evolving AspectOriented Programs. In Proceedings of the 7th Workshop on Foundations of Aspect-Oriented Languages (Brussels, Belgium) (FOAL '08). Association for Computing Machinery, New York, NY, USA, 19-28. https://doi.org/10.1145/1394496.1394499 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Rafi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, and Syed Ahmed. 2018. A Tool for Optimizing Java 8 Stream Software via Automated Refactoring. In International Working Conference on Source Code Analysis and Manipulation (Madrid, Spain) ( SCAM '18). IEEE, IEEE Press, 34-39. https://doi.org/10.1109/SCAM. 2018.00011 Google ScholarGoogle ScholarCross RefCross Ref
  35. Rafi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, and Syed Ahmed. 2019. Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams. In Proceedings of the 41st International Conference on Software Engineering (Montreal, Quebec, Canada) ( ICSE '19). IEEE Press, Piscataway, NJ, USA, 619-630. https://doi.org/10.1109/ICSE. 2019.00072 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Rafi Khatchadourian, Yiming Tang, Mehdi Bagherzadeh, and Baishakhi Ray. 2020. An Empirical Study on the Use and Misuse of Java 8 Streams. In International Conference on Fundamental Approaches to Software Engineering (FASE 2020 ). ETAPS, Springer, 97-118. https://doi.org/10.1007/978-3-030-45234-6_5 Google ScholarGoogle ScholarCross RefCross Ref
  37. Atul S. Khot. 2018. Concurrent Patterns and Best Practices: Build Scalable Apps with Patterns in Multithreading, Synchronization, and Functional Programming. Packt Publishing.Google ScholarGoogle Scholar
  38. Sunghun Kim and E. James Whitehead. 2006. How Long Did It Take to Fix Bugs?. In Proceedings of the 2006 International Workshop on Mining Software Repositories (Shanghai, China) ( MSR '06). Association for Computing Machinery, New York, NY, USA, 173-174. https://doi.org/10.1145/1137983.1138027 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Steven Lauterburg, Mirco Dotta, Darko Marinov, and Gul Agha. 2009. A Framework for State-Space Exploration of JavaBased Actor Programs. In Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering (ASE '09). IEEE Computer Society, Washington, DC, USA, 468-479. https://doi.org/10.1109/ASE. 2009.88 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Steven Lauterburg, Rajesh K. Karmani, Darko Marinov, and Gul Agha. 2010. Evaluating Ordering Heuristics for Dynamic Partial-order Reduction Techniques. In Proceedings of the 13th International Conference on Fundamental Approaches to Software Engineering (Paphos, Cyprus) ( FASE'10). Springer-Verlag, Berlin, Heidelberg, 308-322. https://doi.org/10.1007/ 978-3-642-12029-9_22 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Edward A. Lee. 2006. The Problem with Threads. Computer 39, 5 (May 2006 ), 33-42. https://doi.org/10.1109/ MC. 2006.180 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Tanakorn Leesatapornwongsa, Jefrey F. Lukman, Shan Lu, and Haryadi S. Gunawi. 2016. TaxDC: A Taxonomy of NonDeterministic Concurrency Bugs in Datacenter Distributed Systems. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (Atlanta, Georgia, USA) ( ASPLOS '16). ACM, New York, NY, USA, 517-530. https://doi.org/10.1145/2872362.2872374 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Mark C. Lewis and Lisa L. Lacher. 2016. Object-Orientation, Abstraction, and Data Structures Using Scala, Second Edition (2nd ed.). Chapman & Hall/CRC.Google ScholarGoogle Scholar
  44. He Li, Jie Luo, and Wei Li. 2014. A formal semantics for debugging synchronous message passing-based concurrent programs. Science China Information Sciences 57, 12 ( 2014 ), 1-18.Google ScholarGoogle Scholar
  45. Sihan Li, Farah Hariri, and Gul Agha. 2018. Targeted Test Generation for Actor Systems. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018 ) (Leibniz International Proceedings in Informatics (LIPIcs)), Todd Millstein (Ed.), Vol. 109. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 8 : 1-8 : 31. https://doi.org/10. 4230/LIPIcs.ECOOP. 2018.8 Google ScholarGoogle ScholarCross RefCross Ref
  46. Zhenmin Li and Yuanyuan Zhou. 2005. PR-Miner: Automatically Extracting Implicit Programming Rules and Detecting Violations in Large Software Code. In Proceedings of the 10th European Software Engineering Conference Held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering (Lisbon, Portugal) (ESEC/FSE-13). ACM, New York, NY, USA, 306-315. https://doi.org/10.1145/1081706.1081755 Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. B. Liang, P. Bian, Y. Zhang, W. Shi, W. You, and Y. Cai. 2016. AntMiner: Mining More Bugs by Reducing Noise Interference. In 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE). 333-344. https://doi.org/10.1145/2884781. 2884870 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Lightbend. 2019a. Akka. https://www.lightbend. com/akka-part-of-lightbend-platform.Google ScholarGoogle Scholar
  49. Lightbend. 2019b. Customer Case Studies. https://www.lightbend. com/case-studies#filter:akka.Google ScholarGoogle Scholar
  50. Lightbend. 2020a. Akka Documentation : Supervision and Monitoring. https://doc.akka.io/docs/akka/2.5/general/supervision. html.Google ScholarGoogle Scholar
  51. Lightbend. 2020b. Akka.actor Documentation. https://doc.akka.io/api/akka/current/akka/actor/Actor.html.Google ScholarGoogle Scholar
  52. Lightbend. 2020c. How Groupon Scales Personalized Ofers To 48 Million Customers On Time. https://www.lightbend. com/case-studies/groupon-scalability-personalized-ofers-to-48-million-customers.Google ScholarGoogle Scholar
  53. Lightbend. 2020d. PayPal Blows Past 1 Billion Transactions Per Day Using Just 8 VMs With Akka, Scala, Kafka and Akka Streams. https://www.lightbend. com/case-studies/paypal-blows-past-1-billion-transactions-per-day-using-just-8-vmsand-akka-scala-kafka-and-akka-streams.Google ScholarGoogle Scholar
  54. Yuheng Long, Mehdi Bagherzadeh, Eric Lin, Ganesha Upadhyaya, and Hridesh Rajan. 2016. On Ordering Problems in Message Passing Software. In Proceedings of the 15th International Conference on Modularity (Málaga, Spain) ( MODULARITY 2016). ACM, New York, NY, USA, 54-65. https://doi.org/10.1145/2889443.2889444 Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Carmen Torres Lopez, Robbert Gurdeep Singh, Stefan Marr, Elisa Gonzalez Boix, and Christophe Scholliers. 2019. Multiverse Debugging: Non-Deterministic Debugging for Non-Deterministic Programs (Brave New Idea Paper). In 33rd European Conference on Object-Oriented Programming, ECOOP 2019, July 15-19, 2019, London, United Kingdom (LIPIcs), Alastair F. Donaldson (Ed.), Vol. 134. Schloss Dagstuhl-Leibniz-Zentrum für Informatik, 27 : 1-27 : 30. https://doi.org/10.4230/LIPIcs. ECOOP. 2019.27 Google ScholarGoogle ScholarCross RefCross Ref
  56. Shan Lu, Soyeon Park, Eunsoo Seo, and Yuanyuan Zhou. 2008. Learning from Mistakes: A Comprehensive Study on Real World Concurrency Bug Characteristics. In Proceedings of the 13th International Conference on Architectural Support for Programming Languages and Operating Systems (Seattle, WA, USA) (ASPLOS XIII). ACM, New York, NY, USA, 329-339. https://doi.org/10.1145/1346281.1346323 Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Manuel Bernhardt. 2020. Akka anti-patterns: race condition. https://manuel.bernhardt.io/ 2016 /08/16/akka-anti-patternsrace-conditions/.Google ScholarGoogle Scholar
  58. Na Meng, Stefan Nagy, Danfeng (Daphne) Yao, Wenjie Zhuang, and Gustavo Arango Argoty. 2018. Secure Coding Practices in Java: Challenges and Vulnerabilities. In Proceedings of the 40th International Conference on Software Engineering (Gothenburg, Sweden) (ICSE '18). Association for Computing Machinery, New York, NY, USA, 372-383. https://doi.org/ 10.1145/3180155.3180201 Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Martin Monperrus. 2014. A Critical Review of "Automatic Patch Generation Learned from Human-Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair. In Proceedings of the 36th International Conference on Software Engineering (Hyderabad, India) (ICSE 2014 ). Association for Computing Machinery, New York, NY, USA, 234-242. https://doi.org/10.1145/2568225.2568324 Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Sarah Nadi, Stefan Krüger, Mira Mezini, and Eric Bodden. 2016. Jumping through Hoops: Why Do Java Developers Struggle with Cryptography APIs?. In Proceedings of the 38th International Conference on Software Engineering (Austin, Texas) ( ICSE '16). Association for Computing Machinery, New York, NY, USA, 935-946. https://doi.org/10.1145/2884781.2884790 Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Stas Negara, Rajesh K. Karmani, and Gul Agha. 2011. Inferring Ownership Transfer for Eficient Message Passing. SIGPLAN Not. 46, 8 (Feb. 2011 ), 81-90. https://doi.org/10.1145/2038037.1941566 Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Netty. May 2020. https://netty.io/.Google ScholarGoogle Scholar
  63. NLTK Project. 2020. Porter Stemming Algorithm in NLTK 3.4.5. https://www.nltk.org/api/nltk.stem.html.Google ScholarGoogle Scholar
  64. Hridesh Rajan. 2015. Capsule-Oriented Programming. In Proceedings of the 37th International Conference on Software Engineering-Volume 2 ( Florence, Italy) (ICSE '15). IEEE Press, 611-614.Google ScholarGoogle Scholar
  65. Baishakhi Ray, Vincent Hellendoorn, Saheel Godhane, Zhaopeng Tu, Alberto Bacchelli, and Premkumar Devanbu. 2016. On the "Naturalness" of Buggy Code. In Proceedings of the 38th International Conference on Software Engineering (Austin, Texas) ( ICSE '16). Association for Computing Machinery, New York, NY, USA, 428-439. https://doi.org/10.1145/2884781.2884848 Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Christofer Rosen and Emad Shihab. 2016. What Are Mobile Developers Asking about? A Large Scale Study Using Stack Overflow. Empirical Softw. Engg. 21, 3 ( June 2016 ), 1192-1223. https://doi.org/10.1007/s10664-015-9379-3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Scala 2.13.2 API. May 2020. https://www.scala-lang.org/api/current/scala/index.html.Google ScholarGoogle Scholar
  68. Christophe Scholliers, Eric Tanter, and Wolfgang De Meuter. 2014. Parallel actor monitors: Disentangling task-level parallelism from data partitioning in the actor model. Science of Computer Programming 80 ( 2014 ), 52-64. https: //doi.org/10.1016/j.scico. 2013. 03.011 Special section on foundations of coordination languages and software architectures (selected papers from FOCLASA'10), Special section-Brazilian Symposium on Programming Languages (SBLP 2010 ) and Special section on formal methods for industrial critical systems (Selected papers from FMICS'11). Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Koushik Sen and Gul Agha. 2006. Automated Systematic Testing of Open Distributed Programs. In Proceedings of the 9th International Conference on Fundamental Approaches to Software Engineering (Vienna, Austria) ( FASE'06). Springer-Verlag, Berlin, Heidelberg, 339-356. https://doi.org/10.1007/11693017_25 Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Stack Exchange. December 2019. https://archive.org/details/stackexchange.Google ScholarGoogle Scholar
  71. Stack Overflow. 2020. How to create a Minimal, Reproducible Example. https://stackoverflow.com/help/minimal-reproducibleexample.Google ScholarGoogle Scholar
  72. Quentin Stiévenart, Jens Nicolay, Wolfgang De Meuter, and Coen De Roover. 2017. Mailbox Abstractions for Static Analysis of Actor Programs. In 31st European Conference on Object-Oriented Programming (ECOOP 2017 ) (Leibniz International Proceedings in Informatics (LIPIcs)), Peter Müller (Ed.), Vol. 74. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 25 : 1-25 : 30. https://doi.org/10.4230/LIPIcs.ECOOP. 2017.25 Google ScholarGoogle ScholarCross RefCross Ref
  73. Janwillem Swalens, Stefan Marr, Joeri De Koster, and Tom Van Cutsem. 2014. Towards Composable Concurrency Abstractions, In Proceedings of the Workshop on Programming Language Approaches to Concurrency and communication-cEntric Software (PLACES). EPTCS 155, 54-60. https://doi.org/10.4204/EPTCS.155.8 Google ScholarGoogle ScholarCross RefCross Ref
  74. Samira Tasharofi, Peter Dinges, and Ralph E. Johnson. 2013. Why Do Scala Developers Mix the Actor Model with Other Concurrency Models?. In Proceedings of the 27th European Conference on Object-Oriented Programming (Montpellier, France) (ECOOP'13). Springer-Verlag, Berlin, Heidelberg, 302-326. https://doi.org/10.1007/978-3-642-39038-8_13 Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Samira Tasharofi, Rajesh K. Karmani, Steven Lauterburg, Axel Legay, Darko Marinov, and Gul Agha. 2012. TransDPOR: A Novel Dynamic Partial-order Reduction Technique for Testing Actor Programs. In Proceedings of the 14th Joint IFIP WG 6.1 International Conference and Proceedings of the 32Nd IFIP WG 6.1 International Conference on Formal Techniques for Distributed Systems (Stockholm, Sweden) ( FMOODS'12/FORTE'12). Springer-Verlag, Berlin, Heidelberg, 219-234. https://doi.org/10.1007/978-3-642-30793-5_14 Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. S. Tasharofi, M. Pradel, Y. Lin, and R. Johnson. 2013. Bita: Coverage-guided, automatic testing of actor programs. In 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE). 114-124. https://doi.org/10.1109/ASE. 2013.6693072 Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Carmen Torres Lopez, Elisa Gonzalez Boix, Christophe Scholliers, Stefan Marr, and Hanspeter Mössenböck. 2017. A Principled Approach towards Debugging Communicating Event-Loops. In Proceedings of the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control (Vancouver, BC, Canada) ( AGERE 2017 ). Association for Computing Machinery, New York, NY, USA, 41-49. https://doi.org/10.1145/3141834.3141839 Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Carmen Torres Lopez, Stefan Marr, Elisa Gonzalez Boix, and Hanspeter Mössenböck. 2018. A Study of Concurrency Bugs and Advanced Development Support for Actor-based Programs. In Programming with Actors-State-of-the-Art and Research Perspectives. 155-185. https://doi.org/10.1007/978-3-030-00302-9_6 Google ScholarGoogle ScholarCross RefCross Ref
  79. Tengfei Tu, Xiaoyu Liu, Linhai Song, and Yiying Zhang. 2019. Understanding Real-World Concurrency Bugs in Go. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (Providence, RI, USA) ( ASPLOS '19). ACM, New York, NY, USA, 865-878. https://doi.org/10.1145/ 3297858.3304069 Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Jie Wang, Wensheng Dou, Yu Gao, Chushu Gao, Feng Qin, Kang Yin, and Jun Wei. 2017. A Comprehensive Study on Real World Concurrency Bugs in Node.Js. In Proceedings of the 32Nd IEEE/ACM International Conference on Automated Software Engineering (Urbana-Champaign, IL, USA) ( ASE 2017). IEEE Press, Piscataway, NJ, USA, 520-531. http://dl.acm.org/citation.cfm?id= 3155562. 3155628Google ScholarGoogle ScholarCross RefCross Ref
  81. Xin-Li Yang, David Lo, Xin Xia, Zhi-Yuan Wan, and Jian-Ling Sun. 2016. What Security Questions Do Developers Ask? A Large-Scale Study of Stack Overflow Posts. Journal of Computer Science and Technology 31, 5 ( 01 Sep 2016 ), 910-924. https://doi.org/10.1007/s11390-016-1672-0 Google ScholarGoogle ScholarCross RefCross Ref
  82. Jie Yu. 2013. Finding and Tolerating Concurrency Bugs. Ph.D. Dissertation. The University of Michigan.Google ScholarGoogle Scholar
  83. Yuhao Zhang, Yifan Chen, Shing-Chi Cheung, Yingfei Xiong, and Lu Zhang. 2018. An Empirical Study on TensorFlow Program Bugs. In Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis (Amsterdam, Netherlands) ( ISSTA 2018). ACM, New York, NY, USA, 129-140. https://doi.org/10.1145/3213846.3213866 Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Bo Zhou, Iulian Neamtiu, and Rajiv Gupta. 2015. Predicting Concurrency Bugs: How Many, What Kind and Where Are They?. In Proceedings of the 19th International Conference on Evaluation and Assessment in Software Engineering (Nanjing, China) (EASE '15). Association for Computing Machinery, New York, NY, USA, Article 6, 10 pages. https: //doi.org/10.1145/2745802.2745807 Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Thomas Zimmermann, Nachiappan Nagappan, Philip J. Guo, and Brendan Murphy. 2012. Characterizing and Predicting Which Bugs Get Reopened. In Proceedings of the 34th International Conference on Software Engineering (Zurich, Switzerland) (ICSE '12). IEEE Press, 1074-1083.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Actor concurrency bugs: a comprehensive study on symptoms, root causes, API usages, and differences

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!