000195687 001__ 195687
000195687 005__ 20190812205737.0
000195687 0247_ $$2doi$$a10.1145/2541940.2541977
000195687 037__ $$aCONF
000195687 245__ $$aPrototyping Symbolic Execution Engines for Interpreted Languages
000195687 269__ $$a2014
000195687 260__ $$bACM$$c2014
000195687 336__ $$aConference Papers
000195687 520__ $$aSymbolic execution is being successfully used to automatically test statically compiled code. However, increasingly more systems and applications are written in dynamic interpreted languages like Python. Building a new symbolic execution engine is a monumental effort, and so is keeping it up-to-date as the target language evolves. Furthermore, ambiguous language specifications lead to their implementation in a symbolic execution engine potentially differing from the production interpreter in subtle ways. We address these challenges by flipping the problem and using the interpreter itself as a specification of the language semantics. We present a recipe and tool (called Chef) for turning a vanilla interpreter into a sound and complete symbolic execution engine. Chef symbolically executes the target program by symbolically executing the interpreter's binary while exploiting inferred knowledge about the program's high-level structure. Using Chef, we developed a symbolic execution engine for Python in 5 person-days and one for Lua in 3 person-days. They offer complete and faithful coverage of language features in a way that keeps up with future language versions at near-zero cost. Chef-produced engines are up to 1000 times more performant than if directly executing the interpreter symbolically without Chef.
000195687 6531_ $$astate selection strategies
000195687 6531_ $$asoftware analysis optimizations
000195687 6531_ $$ainterpreter instrumentation
000195687 6531_ $$asymbolic execution
000195687 700__ $$0243539$$g194697$$aBucur, Stefan
000195687 700__ $$0245267$$g212274$$aKinder, Johannes
000195687 700__ $$aCandea, George$$g172241$$0241982
000195687 7112_ $$dMarch 1-5, 2014$$cSalt Lake City, Utah, USA$$a19th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS)
000195687 773__ $$tProceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS)
000195687 8564_ $$zPostprint$$yPostprint$$uhttps://infoscience.epfl.ch/record/195687/files/chef.pdf$$s799206
000195687 909C0 $$xU11275$$pDSLAB$$0252225
000195687 909CO $$ooai:infoscience.tind.io:195687$$qGLOBAL_SET$$pconf$$pIC
000195687 917Z8 $$x194697
000195687 937__ $$aEPFL-CONF-195687
000195687 973__ $$rREVIEWED$$sPUBLISHED$$aEPFL
000195687 980__ $$aCONF