{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,21]],"date-time":"2026-02-21T19:50:46Z","timestamp":1771703446765,"version":"3.50.1"},"publisher-location":"New York, NY, USA","reference-count":78,"publisher":"ACM","license":[{"start":{"date-parts":[[2022,2,22]],"date-time":"2022-02-22T00:00:00Z","timestamp":1645488000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CNS-1955965"],"award-info":[{"award-number":["CNS-1955965"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2022,2,28]]},"DOI":"10.1145\/3503222.3507753","type":"proceedings-article","created":{"date-parts":[[2022,2,22]],"date-time":"2022-02-22T20:49:01Z","timestamp":1645562941000},"page":"888-902","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":18,"title":["Who goes first? detecting go concurrency bugs via message reordering"],"prefix":"10.1145","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-2701-6657","authenticated-orcid":false,"given":"Ziheng","family":"Liu","sequence":"first","affiliation":[{"name":"Pennsylvania State University, USA"}]},{"given":"Shihao","family":"Xia","sequence":"additional","affiliation":[{"name":"Pennsylvania State University, USA"}]},{"given":"Yu","family":"Liang","sequence":"additional","affiliation":[{"name":"Pennsylvania State University, USA"}]},{"given":"Linhai","family":"Song","sequence":"additional","affiliation":[{"name":"Pennsylvania State University, USA"}]},{"given":"Hong","family":"Hu","sequence":"additional","affiliation":[{"name":"Pennsylvania State University, USA"}]}],"member":"320","published-online":{"date-parts":[[2022,2,22]]},"reference":[{"key":"e_1_3_2_1_1_1","volume-title":"CLOC: Count Lines of Code","year":"2017","unstructured":"AlDanial. 2017. CLOC: Count Lines of Code. http:\/\/cloc.sourceforge.net\/"},{"key":"e_1_3_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1736020.1736040"},{"key":"e_1_3_2_1_3_1","volume-title":"Proceedings of the 34th International Conference on Software Engineering (ICSE \u201912)","author":"Cai Yan","unstructured":"Yan Cai and W. K. Chan. 2012. MagicFuzzer: Scalable Deadlock Detection for Large-Scale Applications. In Proceedings of the 34th International Conference on Software Engineering (ICSE \u201912). Zurich, Switzerland."},{"key":"e_1_3_2_1_4_1","volume-title":"Proceedings of the 36th International Conference on Software Engineering (ICSE \u201914)","author":"Cai Yan","unstructured":"Yan Cai, Shangru Wu, and W. K. Chan. 2014. ConLock: A Constraint-Based Approach to Dynamic Checking on Deadlocks in Multithreaded Programs. In Proceedings of the 36th International Conference on Software Engineering (ICSE \u201914). Hyderabad, India."},{"key":"e_1_3_2_1_5_1","volume-title":"Proceedings of 29th USENIX Security Symposium (USENIX Security \u201920)","author":"Chen Hongxu","year":"2020","unstructured":"Hongxu Chen, Shengjian Guo, Yinxing Xue, Yulei Sui, Cen Zhang, Yuekang Li, Haijun Wang, and Yang Liu. 2020. MUZZ: Thread-aware Grey-box Fuzzing for Effective Bug Hunting in Multithreaded Programs. In Proceedings of 29th USENIX Security Symposium (USENIX Security \u201920). Virtual Event, USA."},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2018.00046"},{"key":"e_1_3_2_1_7_1","unstructured":"CockroachDB. 2021. leaktest. https:\/\/github.com\/cockroachdb\/cockroach\/tree\/master\/pkg\/util\/leaktest"},{"key":"e_1_3_2_1_8_1","unstructured":"Randy Coulman. 2013. Debugging Race Conditions and Deadlocks. https:\/\/randycoulman.com\/blog\/2013\/03\/05\/debugging-race-conditions-and-deadlocks\/"},{"key":"e_1_3_2_1_9_1","volume-title":"Tools and Algorithms for the Construction and Analysis of Systems (TACAS \u201908).","author":"de Moura Leonardo","unstructured":"Leonardo de Moura and Nikolaj Bj\u00f8rner. 2008. Z3: An Efficient SMT Solver. In Tools and Algorithms for the Construction and Analysis of Systems (TACAS \u201908). Berlin, Heidelberg."},{"key":"e_1_3_2_1_10_1","volume-title":"An Empirical Study of Messaging Passing Concurrency in Go Projects. In 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER \u201919)","author":"Dilley Nicolas","year":"2019","unstructured":"Nicolas Dilley and Julien Lange. 2019. An Empirical Study of Messaging Passing Concurrency in Go Projects. In 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER \u201919). Hangzhou, China."},{"key":"e_1_3_2_1_11_1","unstructured":"Docker. 2022. Docker - Build Ship and Run Any App Anywhere. https:\/\/www.docker.com\/"},{"key":"e_1_3_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.5555\/1924943.1924954"},{"key":"e_1_3_2_1_13_1","unstructured":"Vojtundefinedch Forejt Saurabh Joshi Daniel Kroening Ganesh Narayanaswamy and Subodh Sharma. 2017. Precise Predictive Analysis for Discovering Communication Deadlocks in MPI Programs. ACM Transactions on Programming Languages and Systems."},{"key":"e_1_3_2_1_14_1","volume-title":"Proceedings of the 34th European Conference on Object-Oriented Programming (ECOOP \u201920)","author":"Gabet Julia","year":"2020","unstructured":"Julia Gabet and Nobuko Yoshida. 2020. Static Race Detection and Mutex Safety and Liveness for Go Programs. In Proceedings of the 34th European Conference on Object-Oriented Programming (ECOOP \u201920). Berlin, Germany."},{"key":"e_1_3_2_1_15_1","unstructured":"Andrew Gerrand. 2010. The Go Blog: Share Memory By Communicating. https:\/\/blog.golang.org\/share-memory-by-communicating"},{"key":"e_1_3_2_1_16_1","unstructured":"Google. 2021. Command vet. https:\/\/golang.org\/cmd\/vet\/"},{"key":"e_1_3_2_1_17_1","unstructured":"Google. 2021. Fuzz testing for go. https:\/\/github.com\/google\/gofuzz"},{"key":"e_1_3_2_1_18_1","unstructured":"Google. 2021. Package Deadlock. https:\/\/godoc.org\/github.com\/sasha-s\/go-deadlock"},{"key":"e_1_3_2_1_19_1","unstructured":"Google. 2021. Package SSA. https:\/\/godoc.org\/golang.org\/x\/tools\/go\/ssa"},{"key":"e_1_3_2_1_20_1","unstructured":"Google. 2022. A high performance open-source universal RPC framework. https:\/\/github.com\/grpc\/grpc-go"},{"key":"e_1_3_2_1_21_1","unstructured":"Google. 2022. Data Race Detector. https:\/\/golang.org\/doc\/articles\/race_detector.html"},{"key":"e_1_3_2_1_22_1","volume-title":"Effective Go: Concurrency. https:\/\/golang.org\/doc\/effective_go.html#concurrency","year":"2022","unstructured":"Google. 2022. Effective Go: Concurrency. https:\/\/golang.org\/doc\/effective_go.html#concurrency"},{"key":"e_1_3_2_1_23_1","unstructured":"Google. 2022. Honggfuzz. https:\/\/google.github.io\/honggfuzz\/"},{"key":"e_1_3_2_1_24_1","unstructured":"Google. 2022. Package AST. https:\/\/golang.org\/pkg\/go\/ast\/"},{"key":"e_1_3_2_1_25_1","volume-title":"Proceedings of the 23rd International Conference on Supercomputing (ICS \u201909)","author":"Hilbrich Tobias","unstructured":"Tobias Hilbrich, Bronis R. de Supinski, Martin Schulz, and Matthias S. M\u00fcller. 2009. A Graph Based Approach for MPI Deadlock Detection. In Proceedings of the 23rd International Conference on Supercomputing (ICS \u201909). Yorktown Heights, NY, USA."},{"key":"e_1_3_2_1_26_1","volume-title":"Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis (SC \u201912)","author":"Hilbrich Tobias","unstructured":"Tobias Hilbrich, Joachim Protze, Martin Schulz, Bronis R. de Supinski, and Matthias S. M\u00fcller. 2012. MPI Runtime Error Detection with MUST: Advances in Deadlock Detection. In Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis (SC \u201912). Salt Lake City, Utah."},{"key":"e_1_3_2_1_27_1","volume-title":"Design Draft: First Class Fuzzing. https:\/\/golang.org\/s\/draft-fuzzing-design","author":"Hockman Katie","year":"2021","unstructured":"Katie Hockman. 2021. Design Draft: First Class Fuzzing. https:\/\/golang.org\/s\/draft-fuzzing-design"},{"key":"e_1_3_2_1_28_1","unstructured":"Dominik Honnef. 2022. Staticcheck \u2014 a collection of static analysis tools for working with Go code. https:\/\/github.com\/dominikh\/go-tools"},{"key":"e_1_3_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737975"},{"key":"e_1_3_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594315"},{"key":"e_1_3_2_1_31_1","volume-title":"Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA \u201916)","author":"Huang Jeff","unstructured":"Jeff Huang and Arun K. Rajagopalan. 2016. Precise and Maximal Race Detection from Incomplete Traces. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA \u201916). Amsterdam, Netherlands."},{"key":"e_1_3_2_1_32_1","volume-title":"Lazy-CSeq: A Context-Bounded Model Checking Tool for Multi-threaded C-Programs. In 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE \u201915)","author":"Inverso Omar","year":"2015","unstructured":"Omar Inverso, Truc L. Nguyen, Bernd Fischer, Salvatore La Torre, and Gennaro Parlato. 2015. Lazy-CSeq: A Context-Bounded Model Checking Tool for Multi-threaded C-Programs. In 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE \u201915). Lincoln, Nebraska, USA."},{"key":"e_1_3_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2019.00017"},{"key":"e_1_3_2_1_34_1","volume-title":"Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI \u201908)","author":"Jula Horatiu","year":"2008","unstructured":"Horatiu Jula, Daniel Tralamazza, Cristian Zamfir, and George Candea. 2008. Deadlock Immunity: Enabling Systems to Defend against Deadlocks. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI \u201908). San Diego, California."},{"key":"e_1_3_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970309"},{"key":"e_1_3_2_1_36_1","unstructured":"Kubernetes. 2022. Production-Grade Container Orchestration. https:\/\/kubernetes.io\/"},{"key":"e_1_3_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009847"},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180157"},{"key":"e_1_3_2_1_39_1","volume-title":"Proceedings of the 11th USENIX Conference on Operating Systems Design and Implementation (OSDI \u201914)","author":"Leesatapornwongsa Tanakorn","unstructured":"Tanakorn Leesatapornwongsa, Mingzhe Hao, Pallavi Joshi, Jeffrey F. Lukman, and Haryadi S. Gunawi. 2014. SAMC: Semantic-Aware Model Checking for Fast Discovery of Deep Bugs in Cloud Systems. In Proceedings of the 11th USENIX Conference on Operating Systems Design and Implementation (OSDI \u201914). Broomfield, CO, USA."},{"key":"e_1_3_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/3341301.3359638"},{"key":"e_1_3_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3274694.3274718"},{"key":"e_1_3_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3037697.3037735"},{"key":"e_1_3_2_1_43_1","unstructured":"Tapir Liu. 2022. Some Panic\/Recover Use Cases. https:\/\/go101.org\/article\/panic-and-recover-use-cases.html"},{"key":"e_1_3_2_1_44_1","unstructured":"Ziheng Liu Shihao Xia Yu Liang Linhai Song and Hong Hu. 2021. asplos-710-artifact. https:\/\/docs.google.com\/spreadsheets\/d\/1tLcgsfYlll0g20KMYgDKkAtwZtk426dMSUZ6SvXk04s\/edit##gid=0"},{"key":"e_1_3_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3445814.3446756"},{"key":"e_1_3_2_1_46_1","unstructured":"LLVM. 2022. libFuzzer \u2013 a library for coverage-guided fuzz testing. https:\/\/llvm.org\/docs\/LibFuzzer.html"},{"key":"e_1_3_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168864"},{"key":"e_1_3_2_1_48_1","volume-title":"Proceedings of the Fourteenth EuroSys Conference 2019 (EuroSys \u201919)","author":"Lukman Jeffrey F.","unstructured":"Jeffrey F. Lukman, Huan Ke, Cesar A. Stuardo, Riza O. Suminto, Daniar H. Kurniawan, Dikaimin Simon, Satria Priambada, Chen Tian, Feng Ye, Tanakorn Leesatapornwongsa, Aarti Gupta, Shan Lu, and Haryadi S. Gunawi. 2019. FlyMC: Highly Scalable Testing of Complex Interleavings in Distributed Systems. In Proceedings of the Fourteenth EuroSys Conference 2019 (EuroSys \u201919). Dresden, Germany."},{"key":"e_1_3_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/96267.96279"},{"key":"e_1_3_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.5555\/1855741.1855760"},{"key":"e_1_3_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190265"},{"key":"e_1_3_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1134018"},{"key":"e_1_3_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/2892208.2892232"},{"key":"e_1_3_2_1_54_1","volume-title":"Stack Overflow Developer Survey","author":"Overflow Stack","year":"2020","unstructured":"Stack Overflow. 2020. Stack Overflow Developer Survey 2020. https:\/\/insights.stackoverflow.com\/survey\/2020"},{"key":"e_1_3_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508244.1508249"},{"key":"e_1_3_2_1_56_1","volume-title":"Proceedings of the 19th ACM symposium on Operating systems principles (SOSP \u201903)","author":"Dawson","unstructured":"Dawson R. Engler and Ken Ashcraft. 2003. RacerX: Effective, static detection of race conditions and deadlocks. In Proceedings of the 19th ACM symposium on Operating systems principles (SOSP \u201903). Bolton Landing, New York, USA."},{"key":"e_1_3_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.14722\/ndss.2017.23404"},{"key":"e_1_3_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635922"},{"key":"e_1_3_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/3314221.3322484"},{"key":"e_1_3_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375581.1375584"},{"key":"e_1_3_2_1_61_1","volume-title":"Proceedings of the 2012 USENIX Annual Technical Conference (USENIX ATC \u201912)","author":"Serebryany Konstantin","year":"2012","unstructured":"Konstantin Serebryany, Derek Bruening, Alexander Potapenko, and Dmitry Vyukov. 2012. AddressSanitizer: A Fast Address Sanity Checker. In Proceedings of the 2012 USENIX Annual Technical Conference (USENIX ATC \u201912). Boston, MA."},{"key":"e_1_3_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/1791194.1791203"},{"key":"e_1_3_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1109\/APSEC.2008.68"},{"key":"e_1_3_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-33296-8_15"},{"key":"e_1_3_2_1_65_1","unstructured":"Alan Shreve. 2014. Principles of designing Go APIs with channels. https:\/\/inconshreveable.com\/07-08-2014\/principles-of-designing-go-apis-with-channels\/"},{"key":"e_1_3_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.14722\/ndss.2016.23368"},{"key":"e_1_3_2_1_67_1","unstructured":"Ashish Tiwari. 2020. Golang fatal error: concurrent map writes. https:\/\/ashish.one\/blogs\/fatal-error-concurrent-map-writes\/"},{"key":"e_1_3_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/3297858.3304069"},{"key":"e_1_3_2_1_69_1","unstructured":"Uber. 2021. goleak. https:\/\/github.com\/uber-go\/goleak"},{"key":"e_1_3_2_1_70_1","volume-title":"Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP \u201908)","author":"Vakkalanka Sarvani S.","unstructured":"Sarvani S. Vakkalanka, Subodh Sharma, Ganesh Gopalakrishnan, and Robert M. Kirby. 2008. ISP: A Tool for Model Checking MPI Programs. In Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP \u201908). Salt Lake City, UT, USA."},{"key":"e_1_3_2_1_71_1","unstructured":"Dmitry Vyukov. 2021. go-fuzz: randomized testing for Go. https:\/\/github.com\/dvyukov\/go-fuzz"},{"key":"e_1_3_2_1_72_1","unstructured":"Jacob Walker. 2018. Goroutine Leaks - The Forgotten Sender. https:\/\/www.ardanlabs.com\/blog\/2018\/11\/goroutine-leaks-the-forgotten-sender.html"},{"key":"e_1_3_2_1_73_1","unstructured":"Wikipedia. 2022. Go (programming language). https:\/\/en.wikipedia.org\/wiki\/Go_(programming_language)"},{"key":"e_1_3_2_1_74_1","volume-title":"Proceedings of the 6th USENIX Symposium on Networked Systems Design and Implementation (NSDI \u201909)","author":"Yang Junfeng","year":"2009","unstructured":"Junfeng Yang, Tisheng Chen, Ming Wu, Zhilei Xu, Xuezheng Liu, Haoxiang Lin, Mao Yang, Fan Long, Lintao Zhang, and Lidong Zhou. 2009. MODIST: Transparent Model Checking of Unmodified Distributed Systems. In Proceedings of the 6th USENIX Symposium on Networked Systems Design and Implementation (NSDI \u201909). Boston, Massachusetts, USA."},{"key":"e_1_3_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2019.00057"},{"key":"e_1_3_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/3373376.3378484"},{"key":"e_1_3_2_1_77_1","volume-title":"Proceedings of the 27th USENIX Conference on Security Symposium (USENIX Security \u201918)","author":"Yun Insu","year":"2018","unstructured":"Insu Yun, Sangho Lee, Meng Xu, Yeongjin Jang, and Taesoo Kim. 2018. QSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing. In Proceedings of the 27th USENIX Conference on Security Symposium (USENIX Security \u201918). Berkeley, CA, USA."},{"key":"e_1_3_2_1_78_1","unstructured":"Michal Zalewski. 2020. American fuzzy lop. http:\/\/lcamtuf.coredump.cx\/afl\/"}],"event":{"name":"ASPLOS '22: 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems","location":"Lausanne Switzerland","acronym":"ASPLOS '22","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages","SIGOPS ACM Special Interest Group on Operating Systems","SIGARCH ACM Special Interest Group on Computer Architecture","SIGBED ACM Special Interest Group on Embedded Systems"]},"container-title":["Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3503222.3507753","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3503222.3507753","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3503222.3507753","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:11:40Z","timestamp":1750191100000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3503222.3507753"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,2,22]]},"references-count":78,"alternative-id":["10.1145\/3503222.3507753","10.1145\/3503222"],"URL":"https:\/\/doi.org\/10.1145\/3503222.3507753","relation":{},"subject":[],"published":{"date-parts":[[2022,2,22]]},"assertion":[{"value":"2022-02-22","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}