Dynamically diagnosing type errors in unsafe code

作者: Stephen Kell

DOI: 10.1145/2983990.2983998

关键词: Type (model theory)Type checkingProgrammerComputer scienceStatic analysisPointer (computer programming)LivenessComputer engineeringCode (cryptography)Real-time computingOverhead (computing)

摘要: Existing approaches for detecting type errors in unsafe languages are limited. Static analysis methods imprecise, and often require source-level changes, while most dynamic check only memory properties (bounds, liveness, etc.), owing to a lack of run-time information. This paper describes libcrunch, system binary-compatible checking unmodified code, currently focusing on C. Practical experience shows that our prototype implementation is easily applicable many real codebases without modification, correctly flags programmer with very low rate false positives, offers overhead, covers classes error caught by no previously existing tool.

参考文章(24)
Julian Seward, Nicholas Nethercote, Using Valgrind to detect undefined value errors with bit-precision usenix annual technical conference. pp. 2- 2 ,(2005)
Suan Hsi Yong, Susan Horwitz, Reducing the Overhead of Dynamic Analysis Electronic Notes in Theoretical Computer Science. ,vol. 70, pp. 158- 178 ,(2002) , 10.1016/S1571-0661(04)80583-8
Alexey Loginov, Suan Hsi Yong, Susan Horwitz, Thomas Reps, Debugging via Run-Time Type Checking fundamental approaches to software engineering. pp. 217- 232 ,(2001) , 10.1007/3-540-45314-8_16
Michael Burrows, Stephen N. Freund, Janet L. Wiener, Run-time type checking for binary programs compiler construction. pp. 90- 105 ,(2003) , 10.1007/3-540-36579-6_7
James Cheney, Michael W. Hicks, Yanling Wang, Dan Grossman, J. Greg Morrisett, Trevor Jim, Cyclone: A Safe Dialect of C usenix annual technical conference. pp. 275- 288 ,(2002)
Konstantin Serebryany, Derek Bruening, Alexander Potapenko, Dmitry Vyukov, AddressSanitizer: a fast address sanity checker usenix annual technical conference. pp. 28- 28 ,(2012)
Paul R Wilson, Mark S Johnstone, Michael Neely, David Boles, None, Dynamic Storage Allocation: A Survey and Critical Review international symposium on memory management. pp. 1- 116 ,(1995) , 10.1007/3-540-60368-9_19
Todd M. Austin, Scott E. Breach, Gurindar S. Sohi, Efficient detection of all pointer and array access errors programming language design and implementation. ,vol. 29, pp. 290- 301 ,(1994) , 10.1145/178243.178446
Qin Zhao, Derek Bruening, Saman Amarasinghe, Umbra: efficient and scalable memory shadowing symposium on code generation and optimization. pp. 22- 31 ,(2010) , 10.1145/1772954.1772960
Stephen Kell, Towards a dynamic object model within Unix processes sigplan symposium on new ideas new paradigms and reflections on programming and software. pp. 224- 239 ,(2015) , 10.1145/2814228.2814238