ABSTRACT
In order to take advantage of multi-core hardware, more and more applications are becoming multi-threaded. Unfortunately concurrent programs are prone to bugs, such as data races. Recently much work has been devoted to detecting data races in multi-threaded programs. Most tools, however, require the accurate knowledge of synchronizations in the program, and may otherwise suffer from false positives in race detection, limiting their usability. To address this problem, some tools such as Intel® Inspector provide mechanisms for suppressing false positives and/or annotating synchronizations not automatically recognized by the tools. However, they require users' input or even changes of the source code.
We took a different approach to address this problem. More specifically, we first used a state-of-the-art commercial data race detector, namely Intel® Inspector on 17 applications of various types including 5 servers, 5 client/desktop applications, and 7 scientific ones, without utilizing any suppression or annotation mechanisms provided by the product that need users' input. We examined a total of 1420 false data races and identified two major root causes including address transfer, where one thread passes memory address to another thread. We found more than 62% false data races were caused by address transfer. Based on this observation, we designed and implemented an algorithm that automatically identify address transfer and use the information to prune the false data races. Our evaluation with 8 real-world applications shows that it can effectively prune all false data races caused by unrecognized address transfers, without eliminating any true data race that was originally reported.
- Google thread sanitizer. http://code.google.com/p/data-race-test/wiki/ThreadSanitizer.Google Scholar
- Sun studio 12: Thread analyzer user's guide. http://download.oracle.com/docs/cd/E19205-01/index.html.Google Scholar
- Valgrind. http://www.valgrind.org.Google Scholar
- A.Bessey, K. Block, B. Chelf, and et al. A few billion lines of code later: Using static analysis to find bugs in the real world. Communications of the ACM, 53(2):66--75, 2010. Google ScholarDigital Library
- A.Ho, M. Fetterman, C. Clark, A. Warfield, and S. Hand. Practical taint-based protection using demand emulation. In EuroSys, pages 29--41, 2006. Google ScholarDigital Library
- A.Mairh, D. Barik, K. Verma, and D. Jena. Honeypot in network security: a survey. In ICCCS, pages 600--605, 2011. Google ScholarDigital Library
- A.Nistor, D. Marinov, and J. Torrellas. Light64: Lightweight hardware support for data race detection during systematic testing of parallel programs. In MICRO, pages 541--552, 2009. Google ScholarDigital Library
- A.Slowinska and H. Bos. Pointless tainting? evaluating the practicality of pointer tainting. In EuroSys, pages 61--74, 2009. Google ScholarDigital Library
- C.K.Luk, R. Cohn, R. Muth, and et al. Pin: Building customized program analysis tool with dynamic instrumentation. In PLDI, pages 190--200, 2005. Google ScholarDigital Library
- C.Rossbach, O. Hoffman, D. Porter, H. Ramadan, A. Bhadari, and E. Witchel. Txlinux: Using and managing hardware transactional memory in the operating system. In SOSP, pages 87--102, 2007. Google ScholarDigital Library
- D.Engler and K. Ashcraft. Racerx: Effective, static detection of race conditions and deadlocks. In SOSP, pages 237--252, 2003. Google ScholarDigital Library
- E.Posniansky and A. Schuster. Efficient on-the-fly race detection in multithreaded c++ programs. In PPoPP, pages 179--190, 2003. Google ScholarDigital Library
- F.Qin, C. Wang, Z. Li, and et al. Lift: A low-overhead practical information flow tracking system for detecting security attacks. In MICRO, pages 135--148, 2006. Google ScholarDigital Library
- Intel. Intel threading building blocks. http://threadingbuildingblocks.org.Google Scholar
- Intel. Intel inspector xe 2011, 2011. http://software.intel.com/en-us/articles/intel-inspector-xe/.Google Scholar
- A. Jannesari and W. F. Tichy. Identifying ad-hoc synchronization for enhanced race detection. In IPDPS, 2010.Google ScholarCross Ref
- J.D.Choi, K. Lee, A. Loginov, R. O'Callahan, V. Sarkar, and M. Sridharan. Efficient and precise data race detection for object oriented programs. In PLDI, pages 285--297, 2002. Google ScholarDigital Library
- J.Erickson, M. Musuvathi, S. Burckhardt, and K. Olynyk. Effective data-race detection for the kernel. In OSDI, 2010. Google ScholarDigital Library
- J.Newsome and D. Song. Dynamic taint analysisi for automaic detection, analysis, and signature generation of exploits on commodity software. In NDSS, 2005.Google Scholar
- K.Poulsen. Tracking the blackout bug. http://www.securityfocus.com/news/8412, 2007.Google Scholar
- K.Sen. Race directed random testing of concurrent programs. In PLDI, 2008. Google ScholarDigital Library
- L.Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21:558--565, 1978. Google ScholarDigital Library
- C. C. Minh, J. Chung, C. Kozyrakis, and K. Olukotun. Stamp:stanford transactional applications for multi-processing. In IISWC, 2008.Google Scholar
- M.Kim, H. Kim, and C. K. Luk. Sd3: A scalable approach to dynamic data-dependence profiling. In MICRO, pages 535--546, 2010. Google ScholarDigital Library
- M.Naik, A. Aiken, and J. Whaley. Effective static race detection for java. In PLDI, pages 308--319, 2006. Google ScholarDigital Library
- M.Prvulovic. Cord: Cost-effective (and nearly overhead-free) order-recording and data race detection. In HPCA, pages 232--243, 2006.Google ScholarCross Ref
- M.Prvulovic and J. Torrellas. Reenact: Using thread-level speculation mechanisms to debug data races in multithreaded codes. In ISCA, 2003. Google ScholarDigital Library
- N.G.Leveson and C. S. Turner. Investigation of the terac-25 accidents. IEEE Computer, 26(7):18,41, 1993. Google ScholarDigital Library
- N.Sterling. Warlock: A static data race analysis tool. In USENIX Winter Technical Conference, pages 97--106, 1993.Google Scholar
- P.Zhou, R. Teodorescu, and Y. Zhou. Hard: Hardwared assisted lock-set based data race detection. In HPCA, pages 121--132, 2007. Google ScholarDigital Library
- R.Chugh, J. Voung, R. Jhala, and S. Lerner. Dataflow analysis for concurrent programs using datarace detection. In PLDI, pages 316--326, 2008. Google ScholarDigital Library
- S.L.Min and J. D. Choi. An efficient cache-based access anomaly detection scheme. In ASPLOS, pages 235--244, 1991. Google ScholarDigital Library
- S.Narayanasamy, Z. Wang, J. Tigani, A. Edwards, and B. Calder. Automatically classifying benign and harmful data races using replay analysis. In PLDI, 2007. Google ScholarDigital Library
- S.Park, S. Lu, and Y. Zhou. Ctrigger: Exposing atomicity violation bugs from their hiding places. In ASPLOS, 2009. Google ScholarDigital Library
- S.Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multi-threaded programs. In SOSP, 1997. Google ScholarDigital Library
- S.T.King and P. M. Chen. Backtracking intrusions. In SOSP, 2003. Google ScholarDigital Library
- U.Aydonat and T. Abdelrahman. Hardware support for relaxed concurrency control in transactional memory system. In MICRO, pages 15--26, 2010. Google ScholarDigital Library
- W. Xiong, S. Park, J. Zhang, Y. Zhou, and Z. Ma. Ad hoc synchronization considered harmful. In OSDI, pages 163--176, 2010. Google ScholarDigital Library
- X.Zhang and R. Gupta. Whole execution traces. In MICRO, 2004. Google ScholarDigital Library
- Y.Yu, T. Rodeheffer, and W. Chen. Racetrack:efficient detection of data race conditions via adaptive tracking. In SOSP, pages 221--234, 2006. Google ScholarDigital Library
Index Terms
- ATDetector: improving the accuracy of a commercial data race detector by identifying address transfer
Recommendations
RaceChecker: Efficient Identification of Harmful Data Races
PDP '15: Proceedings of the 2015 23rd Euromicro International Conference on Parallel, Distributed, and Network-Based ProcessingData races hidden in concurrent programs have caused severe failures. To improve the reliability, many race detectors are proposed. However, most of the reported races are not harmful, which consumes manual effort to identify the harmful races. This ...
TxRace: Efficient Data Race Detection Using Commodity Hardware Transactional Memory
ASPLOS'16Detecting data races is important for debugging shared-memory multithreaded programs, but the high runtime overhead prevents the wide use of dynamic data race detectors. This paper presents TxRace, a new software data race detector that leverages ...
TxRace: Efficient Data Race Detection Using Commodity Hardware Transactional Memory
ASPLOS '16Detecting data races is important for debugging shared-memory multithreaded programs, but the high runtime overhead prevents the wide use of dynamic data race detectors. This paper presents TxRace, a new software data race detector that leverages ...
Comments