skip to main content
research-article

BiRD: Race Detection in Software Binaries under Relaxed Memory Models

Authors Info & Claims
Published:12 July 2022Publication History
Skip Abstract Section

Abstract

Instruction reordering and interleavings in program execution under relaxed memory semantics result in non-intuitive behaviors, making it difficult to provide assurances about program correctness. Studies have shown that up to 90% of the concurrency bugs reported by state-of-the-art static analyzers are false alarms. As a result, filtering false alarms and detecting real concurrency bugs is a challenging problem. Unsurprisingly, this problem has attracted the interest of the research community over the past few decades. Nonetheless, many of the existing techniques rely on analyzing source code, rarely consider the effects introduced by compilers, and assume a sequentially consistent memory model. In a practical setting, however, developers often do not have access to the source code, and even commodity architectures such as x86 and ARM are not sequentially consistent.

In this work, we present Bird, a prototype tool, to dynamically detect harmful data races in x86 binaries under relaxed memory models, TSO and PSO. Bird employs source-DPOR to explore all distinct feasible interleavings for a multithreaded application. Our evaluation of Bird on 42 publicly available benchmarks and its comparison with the state-of-the-art tools indicate Bird’s potential in effectively detecting data races in software binaries.

REFERENCES

  1. [1] ETAPS 2019. COMP 2019—8th International Competition on Software Verification. Retrieved February 19, 2022 from https://sv-comp.sosy-lab.org/2019/.Google ScholarGoogle Scholar
  2. [2] Abadi Martin, Flanagan Cormac, and Freund Stephen N.. 2006. Types for safe locking: Static race detection for Java. ACM Transactions on Programming Languages and Systems 28, 2 (2006), 207255.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. [3] Abdulla Parosh, Aronis Stavros, Jonsson Bengt, and Sagonas Konstantinos. 2014. Optimal dynamic partial order reduction. ACM SIGPLAN Notices 49, 1 (2014), 373384.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. [4] Abdulla Parosh Aziz, Aronis Stavros, Atig Mohamed Faouzi, Jonsson Bengt, Leonardsson Carl, and Sagonas Konstantinos. 2017. Stateless model checking for TSO and PSO. Acta Informatica 54, 8 (2017), 789818.Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. [5] Abdulla Parosh Aziz, Aronis Stavros, Jonsson Bengt, and Sagonas Konstantinos. 2017. Source sets: A foundation for optimal dynamic partial order reduction. Journal of the ACM 64, 4 (Aug. 2017), Article 25, 49 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. [6] Abdulla Parosh Aziz, Aronis Stavros, Jonsson Bengt, and Sagonas Konstantinos. 2017. Source sets: A foundation for optimal dynamic partial order reduction. Journal of the ACM 64, 4 (2017), 25.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. [7] Abdulla Parosh Aziz, Arora Jatin, Atig Mohamed Faouzi, and Krishna Shankaranarayanan. 2019. Verification of programs under the release-acquire semantics. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’19). ACM, New York, NY, 11171132. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. [8] Albert Elvira, Arenas Puri, Banda María García de la, Gómez-Zamalloa Miguel, and Stuckey Peter J.. 2017. Context-sensitive dynamic partial order reduction. In Computer Aided Verification, Majumdar Rupak and Kunčak Viktor (Eds.). Springer International, Cham, Switzerland, 526543.Google ScholarGoogle Scholar
  9. [9] Alglave Jade, Kroening Daniel, Nimal Vincent, and Tautschnig Michael. 2013. Software verification for weak memory via program transformation. In Proceedings of the European Symposium on Programming. 512532.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. [10] Alglave Jade, Maranget Luc, Sarkar Susmit, and Sewell Peter. 2011. Litmus: Running tests against hardware. In Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 4144.Google ScholarGoogle ScholarCross RefCross Ref
  11. [11] Alrabaee Saed, Wang Lingyu, and Debbabi Mourad. 2016. BinGold: Towards robust binary analysis by extracting the semantics of binary code as semantic flow graphs (SFGs). Digital Investigation 18 (2016), S11–S22.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. [12] Andriesse Dennis. 2018. Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly. No Starch Press.Google ScholarGoogle Scholar
  13. [13] Atzeni Simone, Gopalakrishnan Ganesh, Rakamaric Zvonimir, Ahn Dong H., Laguna Ignacio, Schulz Martin, Lee Gregory L., Protze Joachim, and Müller Matthias S.. 2016. ARCHER: Effectively spotting data races in large OpenMP applications. In Proceedings of the 2016 IEEE International Parallel and Distributed Processing Symposium (IPDPS’16). IEEE, Los Alamitos, CA, 5362.Google ScholarGoogle ScholarCross RefCross Ref
  14. [14] Banerjee Utpal, Bliss Brian, Ma Zhiqiang, and Petersen Paul. 2006. Unraveling data race detection in the Intel thread checker. In Proceedings of the 1st Workshop on Software Tools for MultiCore Systems (STMCS’06).Google ScholarGoogle Scholar
  15. [15] Batty Mark, Owens Scott, Sarkar Susmit, Sewell Peter, and Weber Tjark. 2011. Mathematizing C++ concurrency. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’11). ACM, New York, NY, 5566. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. [16] Blum Ben and Gibson Garth. 2016. Stateless model checking with data-race preemption points. ACM SIGPLAN Notices 51, 10 (Oct. 2016), 477493. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. [17] Burnim Jabob, Sen Koushik, and Stergiou Christos. 2011. Sound and complete monitoring of sequential consistency for relaxed memory models. In Tools and Algorithms for the Construction and Analysis of Systems, Abdulla Parosh Aziz and Leino K. Rustan M. (Eds.). Springer, Berlin, Germany, 1125.Google ScholarGoogle ScholarCross RefCross Ref
  18. [18] Burrows Michael and Leino Rustan. 2004. Finding stale-value errors in concurrent programs. Concurrency and Computation: Practice and Experience 16, 12 (2004), 11611172.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. [19] Choi Jong-Deok and Min Sang Lyul. 1991. Race Frontier: Reproducing data races in parallel-program debugging. ACM SIGPLAN Notices 26, 7 (1991), 145154.Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. [20] Chugh Ravi, Voung Jan W., Jhala Ranjit, and Lerner Sorin. 2008. Dataflow analysis for concurrent programs using datarace detection. In Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’08). ACM, New York, NY, 316326. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. [21] Edelstein Orit, Farchi Eitan, Goldin Evgeny, Nir Yarden, Ratsaby Gil, and Ur Shmuel. 2003. Framework for testing multi-threaded Java programs. Concurrency and Computation: Practice and Experience 15, 3–5 (2003), 485499.Google ScholarGoogle ScholarCross RefCross Ref
  22. [22] Effinger-Dean Laura, Lucia Brandon, Ceze Luis, Grossman Dan, and Boehm Hans-J.. 2012. IFRit: Interference-free regions for dynamic data-race detection. ACM SIGPLAN Notices 47 (2012), 467484.Google ScholarGoogle Scholar
  23. [23] Eizenberg Ariel, Peng Yuanfeng, Pigli Toma, Mansky William, and Devietti Joseph. 2017. BARRACUDA: Binary-level analysis of runtime RAces in CUDA programs. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’17). ACM, New York, NY, 126140. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. [24] Elmas Tayfun, Qadeer Shaz, and Tasiran Serdar. 2007. Goldilocks: A race and transaction-aware Java runtime. ACM SIGPLAN Notices 42 (2007), 245255.Google ScholarGoogle Scholar
  25. [25] Elver M. and Nagarajan V.. 2014. TSO-CC: Consistency directed cache coherence for TSO. In Proceedings of the 2014 IEEE 20th International Symposium on High Performance Computer Architecture (HPCA’14). 165176. Google ScholarGoogle ScholarCross RefCross Ref
  26. [26] Flanagan Cormac and Freund Stephen N.. 2009. FastTrack: Efficient and precise dynamic race detection. ACM SIGPLAN Notices 44 (2009), 121133.Google ScholarGoogle Scholar
  27. [27] Flanagan Cormac and Godefroid Patrice. 2005. Dynamic partial-order reduction for model checking software. ACM SIGPLAN Notices 40, 1 (Jan. 2005), 110121. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. [28] Godefroid Patrice. 1990. Using partial orders to improve automatic verification methods. In Proceedings of the International Conference on Computer Aided Verification. 176185.Google ScholarGoogle Scholar
  29. [29] Godefroid Patrice and Nagappan Nachiappan. 2008. Concurrency at Microsoft: An exploratory survey. In Proceedings of the CAV Workshop on Exploiting Concurrency Efficiently and Correctly.Google ScholarGoogle Scholar
  30. [30] Godefroid Patrice, Leeuwen Jan van, Hartmanis Juris, Goos Gerhard, and Wolper Pierre. 1996. Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem, Vol. 1032. Springer, Heidelberg, Germany.Google ScholarGoogle ScholarCross RefCross Ref
  31. [31] Grossman Dan. 2003. Type-safe multithreading in cyclone. ACM SIGPLAN Notices 38 (2003), 1325.Google ScholarGoogle Scholar
  32. [32] Han Kyoung Soo, Kang Boojoong, and Im Eul Gyu. 2011. Malware classification using instruction frequencies. In Proceedings of the 2011 ACM Symposium on Research in Applied Computation. 298300.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. [33] Hartung Marc. n.d. DataRaceBenchmark: Concurrency Benchmarks. Retrieved February 19, 2022 from https://github.com/marchartung/DataRaceBenchmark/; https://github.com/marchartung/DataRaceBenchmark/find/master.Google ScholarGoogle Scholar
  34. [34] Hartung Marc, Schintke Florian, and Schütt Thorsten. 2019. Pinpoint data races via testing and classification. In Proceedings of the 2019 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW’19). IEEE, Los Alamitos, CA, 386393.Google ScholarGoogle ScholarCross RefCross Ref
  35. [35] Huang Jeff, Meredith Patrick O’Neil, and Rosu Grigore. 2014. Maximal sound predictive race detection with control flow abstraction. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’14). ACM, New York, NY, 337348. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. [36] Huang Jeff and Zhang Charles. 2011. Persuasive prediction of concurrency access anomalies. In Proceedings of the 2011 International Symposium on Software Testing and Analysis. ACM, New York, NY, 144154.Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. [37] Huang Shiyou and Huang Jeff. 2016. Maximal causality reduction for TSO and PSO. ACM SIGPLAN Notices 51, 10 (2016), 447461.Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. [38] Jahić Jasmin, Kumar Varun, Jung Matthias, Wirrer Gerhard, Wehn Norbert, and Kuhn Thomas. 2019. Rapid identification of shared memory in multithreaded embedded systems with static scheduling. In Proceedings of the 48th International Conference on Parallel Processing: Workshops (ICPP’19). ACM, New York, NY, Article 15, 8 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. [39] Jeong Dae R., Kim Kyungtae, Shivakumar Basavesh, Lee Byoungyoung, and Shin Insik. 2019. Razzer: Finding kernel race bugs through fuzzing. In Proceedings of the 2019 IEEE Symposium on Security and Privacy (SP’19). IEEE, Los Alamitos, CA, 754768.Google ScholarGoogle ScholarCross RefCross Ref
  40. [40] Kahlon Vineet, Gupta Aarti, and Sinha Nishant. 2006. Symbolic model checking of concurrent programs using partial orders and on-the-fly transactions. In Computer Aided Verification, Ball Thomas and Jones Robert B. (Eds.). Springer, Berlin, Germany, 286299.Google ScholarGoogle Scholar
  41. [41] Kahlon Vineet, Sinha Nishant, Kruus Erik, and Zhang Yun. 2009. Static data race detection for concurrent programs with asynchronous calls. In Proceedings of the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE’09). ACM, New York, NY, 1322. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. [42] Kahlon Vineet, Yang Yu, Sankaranarayanan Sriram, and Gupta Aarti. 2007. Fast and accurate static data-race detection for concurrent programs. In Proceedings of the International Conference on Computer Aided Verification. 226239.Google ScholarGoogle ScholarCross RefCross Ref
  43. [43] Kasikci Baris, Zamfir Cristian, and Candea George. 2012. Data races vs. data race bugs: Telling the difference with portend. ACM SIGPLAN Notices 47, 4 (2012), 185198.Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. [44] Kim K., Yavuz-Kahveci T., and Sanders B. A.. 2009. Precise data race detection in a relaxed memory model using heuristic-based model checking. In Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering. 495499.Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. [45] Kokologiannakis Michalis, Lahav Ori, Sagonas Konstantinos, and Vafeiadis Viktor. 2018. Effective stateless model checking for C/C++ concurrency. Proceedings of the ACM on Programming Languages 2, POPL (2018), Article 17, 32 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. [46] Kokologiannakis Michalis, Raad Azalea, and Vafeiadis Viktor. 2019. Model checking for weakly consistent libraries. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’19). ACM, New York, NY, 96110. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. [47] Kokologiannakis Michalis and Vafeiadis Viktor. 2020. HMC: Model checking for hardware memory models. In Proceedings of the 25th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’20). ACM, New York, NY, 11571171. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. [48] Koval Nikita, Sokolova Maria, Fedorov Alexander, Alistarh Dan, and Tsitelov Dmitry. 2020. Testing concurrency on the JVM with Lincheck. In Proceedings of the 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP’20). ACM, New York, NY, 423424. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. [49] Lahav Ori, Giannarakis Nick, and Vafeiadis Viktor. 2016. Taming release-acquire consistency. ACM SIGPLAN Notices 51, 1 (Jan. 2016), 649662. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. [50] Lahav Ori and Margalit Roy. 2019. Robustness against release/acquire semantics. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’19). ACM, New York, NY, 126141. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. [51] Lamport Leslie. 2019. Time, clocks, and the ordering of events in a distributed system. In Concurrency: The Works of Leslie Lamport, Dahlia Malkhi (Ed). ACM Books, New York, NY, 179196.Google ScholarGoogle Scholar
  52. [52] Lidbury Christopher and Donaldson Alastair F.. 2017. Dynamic race detection for C++ 11. ACM SIGPLAN Notices 52, 1 (2017), 443457.Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. [53] Lidbury Christopher and Donaldson Alastair F.. 2017. Dynamic race detection for C++11. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL’17). ACM, New York, NY, 443457. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. [54] Luk Chi-Keung, Cohn Robert, Muth Robert, Patil Harish, Klauser Artur, Lowney Geoff, Wallace Steven, Reddi Vijay Janapa, and Hazelwood Kim. 2005. Pin: Building customized program analysis tools with dynamic instrumentation. ACM SIGPLAN Notices 40 (2005), 190200.Google ScholarGoogle Scholar
  55. [55] Luo Weiyu and Demsky Brian. 2021. C11Tester: A race detector for C/C++ atomics. In Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems. 630646.Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. [56] Mazurkiewicz Antoni W.. 1987. Trace theory. In Proceedings of an Advanced Course on Petri Nets: Central Models and Their Properties, Advances in Petri Nets 1986—Part II. Springer-Verlag, Berlin, Germany, 279324. http://dl.acm.org/citation.cfm?id=647422.725772.Google ScholarGoogle ScholarCross RefCross Ref
  57. [57] McAllester David A.. 1993. Partial order backtracking. Journal of Artificial Intelligence Research 1 (1993), 1724.Google ScholarGoogle Scholar
  58. [58] Group Imperial College London Multicore. n.d. SCTBench: C/C++ Pthread Benchmarks. Retrieved February 19, 2022 from https://github.com/mc-imperial/sctbench.Google ScholarGoogle Scholar
  59. [59] Muzahid Abdullah, Otsuki Norimasa, and Torrellas Josep. 2010. AtomTracker: A comprehensive approach to atomic region inference and violation detection. In Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture. IEEE, Los Alamitos, CA, 287297.Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. [60] Naik Mayur, Aiken Alex, and Whaley John. 2006. Effective static race detection for Java. In Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’06). ACM, New York, NY, 308319. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. [61] Narayanasamy Satish, Wang Zhenghao, Tigani Jordan, Edwards Andrew, and Calder Brad. 2007. Automatically classifying benign and harmful data races using replay analysis. ACM SIGPLAN Notices 42 (2007), 2231.Google ScholarGoogle Scholar
  62. [62] Norris Brian and Demsky Brian. 2013. CDSchecker: Checking concurrent data structures written with C/C++ atomics. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA’13). ACM, New York, NY, 131150. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. [63] O’Callahan Robert and Choi Jong-Deok. 2003. Hybrid dynamic data race detection. In Proceedings of the 9th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP’03). ACM, New York, NY, 167178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. [64] Park Sangmin, Vuduc Richard W., and Harrold Mary Jean. 2010. Falcon: Fault localization in concurrent programs. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering—Volume 1. ACM, New York, NY, 245254.Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. [65] Pavlogiannis Andreas. 2019. Fast, sound, and effectively complete dynamic race prediction. Proceedings of the ACM on Programming Languages 4, POPL (2019), 129.Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. [66] Peled Doron. 2018. Partial-Order Reduction. Springer International, Cham, Switzerland, 173190. Google ScholarGoogle ScholarCross RefCross Ref
  67. [67] Peled Doron, Valmari Antti, and Kokkarinen Ilkka. 2001. Relaxed visibility enhances partial order reduction. Formal Methods in System Design 19, 3 (2001), 275289.Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. [68] Perdisci Roberto, Lanzi Andrea, and Lee Wenke. 2008. McBoost: Boosting scalability in malware collection and analysis using statistical classification of executables. In Proceedings of the 2008 Annual Computer Security Applications Conference (ACSAC’08). IEEE, Los Alamitos, CA, 301310.Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. [69] Pozzetti Tommaso and Kshemkalyani Ajay D.. 2020. Resettable encoded vector clock for causality analysis with an application to dynamic race detection. IEEE Transactions on Parallel and Distributed Systems 32, 4 (2020), 772785.Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. [70] Pulte Christopher, Flur Shaked, Deacon Will, French Jon, Sarkar Susmit, and Sewell Peter. 2017. Simplifying ARM concurrency: Multicopy-atomic axiomatic and operational models for ARMv8. Proceedings of the ACM on Programming Languages 2, POPL (Dec. 2017), Article 19, 29 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. [71] Roemer Jake, Genç Kaan, and Bond Michael D.. 2020. SmartTrack: Efficient predictive race detection. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’20). ACM, New York, NY, 747762. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. [72] Sadowski Caitlin and Yi Jaeheon. 2014. How developers use data race detection tools. In Proceedings of the 5th Workshop on Evaluation and Usability of Programming Languages and Tools. 4351.Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. [73] Santos Igor, Brezo Felix, Nieves Javier, Penya Yoseba K., Sanz Borja, Laorden Carlos, and Bringas Pablo G.. 2010. Idea: Opcode-sequence-based malware detection. In Proceedings of the International Symposium on Engineering Secure Software and Systems. 3543.Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. [74] Savage Stefan, Burrows Michael, Nelson Greg, Sobalvarro Patrick, and Anderson Thomas. 1997. Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems 15, 4 (Nov. 1997), 391411. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. [75] Shacham Ohad, Sagiv Mooly, and Schuster Assaf. 2005. Scaling model checking of dataraces using dynamic information. In Proceedings of the 10th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP’05). ACM, New York, NY, 107118. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. [76] Sharma Divyanjali and Sharma Subodh. n.d. Thread-modular analysis of release-acquire concurrency. arXiv preprint arXiv:2107.02346 [accepted in SAS’21] (n.d.).Google ScholarGoogle Scholar
  77. [77] Sheng Tianwei, Vachharajani Neil, Eranian Stephane, Hundt Robert, Chen Wenguang, and Zheng Weimin. 2011. RACEZ: A lightweight and non-invasive race detection tool for production applications. In Proceedings of the 2011 33rd International Conference on Software Engineering (ICSE’11). IEEE, Los Alamitos, CA, 401410.Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. [78] Shoshitaishvili Yan, Wang Ruoyu, Salls Christopher, Stephens Nick, Polino Mario, Dutcher Andrew, Grosen John, et al. 2016. SOK: (State of) the art of war: Offensive techniques in binary analysis. In Proceedings of the 2016 IEEE Symposium on Security and Privacy (SP’16). IEEE, Los Alamitos, CA, 138157.Google ScholarGoogle ScholarCross RefCross Ref
  79. [79] Smaragdakis Yannis, Evans Jacob, Sadowski Caitlin, Yi Jaeheon, and Flanagan Cormac. 2012. Sound predictive race detection in polynomial time. ACM SIGPLAN Notices 47 (2012), 387400.Google ScholarGoogle Scholar
  80. [80] Sterling Nicholas. 1993. WARLOCK—A static data race analysis tool. In Proceedings of the USENIX Winter 1993 Conference. 97106.Google ScholarGoogle Scholar
  81. [81] Tassarotti Joseph, Dreyer Derek, and Vafeiadis Viktor. 2015. Verifying read-copy-update in a logic for weak memory. ACM SIGPLAN Notices 50, 6 (2015), 110120.Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. [82] Tice Caroline, Roeder Tom, Collingbourne Peter, Checkoway Stephen, Erlingsson Úlfar, Lozano Luis, and Pike Geoff. 2014. Enforcing forward-edge control-flow integrity in GCC and LLVM. In Proceedings of the 23rd USENIX Security Symposium (USENIX’14). 941955.Google ScholarGoogle Scholar
  83. [83] Trippel Caroline, Manerkar Yatin A., Lustig Daniel, Pellauer Michael, and Martonosi Margaret. 2017. TriCheck: Memory model verification at the trisection of software, hardware, and ISA. ACM SIGPLAN Notices 52, 4 (April 2017), 119133. Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. [84] Valmari Antti. 1996. The state explosion problem. In Advanced Course on Petri Nets. Springer, 429528.Google ScholarGoogle Scholar
  85. [85] Veeraraghavan Kaushik, Chen Peter M., Flinn Jason, and Narayanasamy Satish. 2011. Detecting and surviving data races using complementary schedules. In Proceedings of the 23rd ACM Symposium on Operating Systems Principles. 369384.Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. [86] Voung Jan Wen, Jhala Ranjit, and Lerner Sorin. 2007. RELAY: Static race detection on millions of lines of code. In Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC-FSE’07). ACM, New York, NY, 205214. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. [87] Wang Chao, Yang Zijiang, Kahlon Vineet, and Gupta Aarti. 2008. Peephole partial order reduction. In Tools and Algorithms for the Construction and Analysis of Systems, Ramakrishnan C. R. and Rehof Jakob (Eds.). Springer, Berlin, Germany, 382396.Google ScholarGoogle ScholarCross RefCross Ref
  88. [88] Wester Benjamin, Devecsery David, Chen Peter M., Flinn Jason, and Narayanasamy Satish. 2013. Parallelizing data race detection. ACM SIGPLAN Notices 48, 4 (March 2013), 2738. Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. [89] Wichmann Arne. 2012. Binary Analysis for Code Reconstruction of Control Software. Diploma Thesis. Hamburg University of Technology.Google ScholarGoogle Scholar
  90. [90] Wilcox James R., Flanagan Cormac, and Freund Stephen N.. 2018. VerifiedFT: A verified, high-performance precise dynamic race detector. In Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. ACM, New York, NY, 354367.Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. [91] Yang Yu, Chen Xiaofang, and Gopalakrishnan Ganesh. 2008. Inspect: A Runtime Model Checker for Multithreaded C Programs. Technical Report UUCS-08-004. University of Utah.Google ScholarGoogle Scholar
  92. [92] Yang Yu, Chen Xiaofang, Gopalakrishnan Ganesh, and Kirby Robert M.. 2008. Efficient stateful dynamic partial order reduction. In Model Checking Software, Havelund Klaus, Majumdar Rupak, and Palsberg Jens (Eds.). Springer, Berlin, Germany.Google ScholarGoogle Scholar
  93. [93] Yu Jie, Narayanasamy Satish, Pereira Cristiano, and Pokam Gilles. 2012. Maple: A coverage-driven testing tool for multithreaded programs. ACM SIGPLAN Notices 47 (2012), 485502.Google ScholarGoogle Scholar
  94. [94] Yu Yuan, Rodeheffer Tom, and Chen Wei. 2005. RaceTrack: Efficient detection of data race conditions via adaptive tracking. In Proceedings of the 20th ACM Symposium on Operating Systems Principles (SOSP’05). ACM, New York, NY, 221234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  95. [95] Yun Heecul. n.d. DPthread—Deterministic Pthread Benchmarks. Retrieved February 19, 2022 from https://github.com/heechul/dpthread.Google ScholarGoogle Scholar
  96. [96] Zhang Naling, Kusano Markus, and Wang Chao. 2015. Dynamic partial order reduction for relaxed memory models. ACM SIGPLAN Notices 50 (2015), 250259.Google ScholarGoogle Scholar
  97. [97] Zhang Tong, Jung Changhee, and Lee Dongyoon. 2017. ProRace: Practical data race detection for production use. ACM SIGPLAN Notices 52, 4 (2017), 149162.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. BiRD: Race Detection in Software Binaries under Relaxed Memory Models

    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

    • Published in

      cover image ACM Transactions on Software Engineering and Methodology
      ACM Transactions on Software Engineering and Methodology  Volume 31, Issue 4
      October 2022
      867 pages
      ISSN:1049-331X
      EISSN:1557-7392
      DOI:10.1145/3543992
      • Editor:
      • Mauro Pezzè
      Issue’s Table of Contents

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 12 July 2022
      • Online AM: 31 January 2022
      • Accepted: 1 November 2021
      • Revised: 1 September 2021
      • Received: 1 March 2021
      Published in tosem Volume 31, Issue 4

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Refereed

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Full Text

    View this article in Full Text.

    View Full Text

    HTML Format

    View this article in HTML Format .

    View HTML Format