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 2020 Publication History

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.

Supplementary Material

Auxiliary Presentation Video (oopsla20main-p451-p-video.mp4)
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.
[2]
Stack Overflow. 2012b. correctly terminate akka actors in scala. https://stackoverflow.com/questions/12324055/.
[3]
GitHub. 2013a. ifx garbling of big Tcp.Write. https://github.com/spray/spray/commit/ 332ba626b193794fd4d753839e664aacd4d302a5.
[4]
Stack Overflow. 2013. How should an akka actor be created that might throw an exception? https://stackoverflow.com/ questions/18648390.
[5]
GitHub. 2013b. Spray Project. https://github.com/spray/spray/commit/e34da115fa43d4d46db0e7ae06eea7fbcbc4fdfd.
[6]
Stack Overflow. 2014. akka.io dispatcher configuration Exception. https://stackoverflow.com/questions/21686327.
[7]
Stack Overflow. 2016. postRestart and preRestart methods are not getting invoked in akka actors. https://stackoverflow. com/questions/37608915.
[8]
Stack Overflow. 2017a. Actor Name is not Unique InvalidActorNameException. https://stackoverflow.com/questions/ 11693562/.
[9]
Stack Overflow. 2017b. Doesn't immediately stop child Akka actors when parent actor stopped. https://stackoverflow.com/ questions/45574085.
[10]
Stack Overflow. 2017c. How to use futures with Akka for asynchronous results. https://stackoverflow.com/questions/ 11693562/.
[11]
Stack Overflow. 2018a. Cannot establish remote communication with Akka. https://stackoverflow.com/questions/53188945.
[12]
Stack Overflow. 2018b. Scala Akka Actor-Dead Letters encountered. https://stackoverflow.com/questions/53200356.
[13]
Stack Overflow. 2018c. Send message to actor after restart from Supervisor. https://stackoverflow.com/questions/48446194.
[14]
Stack Overflow. 2019. Akka Routing: Reply's send to router ends up as dead letters. https://stackoverflow.com/questions/ 20564381/.
[15]
Gul Agha. 1986. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA, USA.
[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.
[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
[18]
Akka 2.6.5 API. May 2020. https://doc.akka.io/api/akka/current/akka/index.html.
[19]
Akka Actor Reference Config. April 2020. https://github.com/akka/akka/blob/master/akka-actor/src/main/resources/ reference.conf.
[20]
Akka Typed. May 2020. https://doc.akka.io/docs/akka/current/typed/index.html.
[21]
Apache. 2015. Akka Actors in Spark. https://issues.apache.org/jira/browse/SPARK-5293.
[22]
Joe Armstrong. 2007. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf.
[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
[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
[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
[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
[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
[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/
[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
[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
[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.
[32]
Khari Johnson. 2018. GitHub passes 100 million repositories. https://venturebeat.com/ 2018 /11/08/github-passes-100-millionrepositories/.
[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
[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
[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
[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
[37]
Atul S. Khot. 2018. Concurrent Patterns and Best Practices: Build Scalable Apps with Patterns in Multithreading, Synchronization, and Functional Programming. Packt Publishing.
[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
[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
[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
[41]
Edward A. Lee. 2006. The Problem with Threads. Computer 39, 5 (May 2006 ), 33-42. https://doi.org/10.1109/ MC. 2006.180
[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
[43]
Mark C. Lewis and Lisa L. Lacher. 2016. Object-Orientation, Abstraction, and Data Structures Using Scala, Second Edition (2nd ed.). Chapman & Hall/CRC.
[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.
[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
[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
[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
[48]
Lightbend. 2019a. Akka. https://www.lightbend. com/akka-part-of-lightbend-platform.
[49]
Lightbend. 2019b. Customer Case Studies. https://www.lightbend. com/case-studies#filter:akka.
[50]
Lightbend. 2020a. Akka Documentation : Supervision and Monitoring. https://doc.akka.io/docs/akka/2.5/general/supervision. html.
[51]
Lightbend. 2020b. Akka.actor Documentation. https://doc.akka.io/api/akka/current/akka/actor/Actor.html.
[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.
[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.
[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
[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
[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
[57]
Manuel Bernhardt. 2020. Akka anti-patterns: race condition. https://manuel.bernhardt.io/ 2016 /08/16/akka-anti-patternsrace-conditions/.
[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
[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
[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
[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
[62]
Netty. May 2020. https://netty.io/.
[63]
NLTK Project. 2020. Porter Stemming Algorithm in NLTK 3.4.5. https://www.nltk.org/api/nltk.stem.html.
[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.
[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
[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
[67]
Scala 2.13.2 API. May 2020. https://www.scala-lang.org/api/current/scala/index.html.
[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).
[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
[70]
Stack Exchange. December 2019. https://archive.org/details/stackexchange.
[71]
Stack Overflow. 2020. How to create a Minimal, Reproducible Example. https://stackoverflow.com/help/minimal-reproducibleexample.
[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
[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
[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
[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
[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
[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
[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
[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
[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. 3155628
[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
[82]
Jie Yu. 2013. Finding and Tolerating Concurrency Bugs. Ph.D. Dissertation. The University of Michigan.
[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
[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
[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.

Cited By

View all

Index Terms

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

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image Proceedings of the ACM on Programming Languages
      Proceedings of the ACM on Programming Languages  Volume 4, Issue OOPSLA
      November 2020
      3108 pages
      EISSN:2475-1421
      DOI:10.1145/3436718
      Issue’s Table of Contents
      This work is licensed under a Creative Commons Attribution International 4.0 License.

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 13 November 2020
      Published in PACMPL Volume 4, Issue OOPSLA

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. Actor bug API usages
      2. Actor bug differences
      3. Actor bug root causes
      4. Actor bug symptoms
      5. Akka actor bugs
      6. GitHub
      7. Stack Overflow

      Qualifiers

      • Research-article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)307
      • Downloads (Last 6 weeks)52
      Reflects downloads up to 25 Jan 2025

      Other Metrics

      Citations

      Cited By

      View all
      • (2024)Rethinking State Management in Actor Systems for Cloud-Native ApplicationsProceedings of the 2024 ACM Symposium on Cloud Computing10.1145/3698038.3698540(898-914)Online publication date: 20-Nov-2024
      • (2024)When Your Infrastructure Is a Buggy Program: Understanding Faults in Infrastructure as Code EcosystemsProceedings of the ACM on Programming Languages10.1145/36897998:OOPSLA2(2490-2520)Online publication date: 8-Oct-2024
      • (2024)Feedback-Directed Cross-Layer Optimization of Cloud-Based Functional Actor Applications2024 IEEE 35th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE62328.2024.00063(605-616)Online publication date: 28-Oct-2024
      • (2023)High-performance Deterministic Concurrency Using Lingua FrancaACM Transactions on Architecture and Code Optimization10.1145/361768720:4(1-29)Online publication date: 26-Oct-2023
      • (2023)𝜇Akka: Mutation Testing for Actor Concurrency in Akka using Real-World BugsProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616362(262-274)Online publication date: 30-Nov-2023
      • (2023)Deductive verification of active objects with Crowbar▪Science of Computer Programming10.1016/j.scico.2023.102928226:COnline publication date: 1-Mar-2023
      • (2022)Challenges in migrating imperative deep learning programs to graph executionProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3528455(469-481)Online publication date: 23-May-2022
      • (2021)Well-typed programs can go wrong: a study of typing-related bugs in JVM compilersProceedings of the ACM on Programming Languages10.1145/34855005:OOPSLA(1-30)Online publication date: 15-Oct-2021

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Login options

      Full Access

      Figures

      Tables

      Media

      Share

      Share

      Share this Publication link

      Share on social media