Compiling WebAssembly Concolic Execution with Staging, Continuations, and Snapshots
This program is tentative and subject to change.
Concolic execution is a variant of symbolic execution that runs a program simultaneously with concrete and symbolic inputs. It records the symbolic constraints encountered along a concrete execution path, then solves those constraints to generate inputs that explore new paths. Existing concolic engines generally follow one of two implementation strategies: Interpreter-based systems are comparatively simple to build but incur substantial interpretation overhead, while instrumentation-based systems avoid this overhead but typically re-execute the program from the beginning for each new input.
In this paper, we develop a new approach that achieves the best of both worlds. Starting from the concrete semantics of the target language, we first develop a definitional concolic interpreter and stage it to compile away interpretation overhead while retaining the simplicity of an interpretation-based implementation. By expressing the staged interpreter in continuation-passing style, we can capture execution snapshots at branch points and resume from them when exploring alternative paths, avoiding repeated execution from the program entry. Because snapshot-reuse can itself incur overhead, we further develop a heuristic that favors snapshot-reuse only when it is expected to be beneficial. We instantiate this approach for WebAssembly and implement it in a new concolic-execution compiler GenWasym. Across 184 benchmarks, GenWasym with staging along achieves a 29.4X average speedup over the interpreter-based WASP; heuristic snapshot-reuse further increases the speedup to 44.9X.
This program is tentative and subject to change.
Wed 7 OctDisplayed time zone: Pacific Time (US & Canada) change
15:30 - 17:00 | Staging and MetaprogrammingOOPSLA at Junior Ballroom 1&2 Chair(s): Shigeru Chiba The University of Tokyo | ||
15:30 18mTalk | When Do Staging Annotations Preserve Semantics? Mechanizing Typed Semantics-Preserving Multi-stage Programming with Let-InsertionDistinguished Paper OOPSLA DOI Pre-print | ||
15:48 18mTalk | Refined² Environment Classifiers OOPSLA DOI Pre-print | ||
16:06 18mTalk | Compiling WebAssembly Concolic Execution with Staging, Continuations, and Snapshots OOPSLA Dinghong Zhong Tufts University, Alexander Bai New York University, Mikail Khan Carnegie Mellon University, Guannan Wei Tufts University DOI Pre-print | ||
16:24 18mTalk | Staged Multi-step UTXO Workflows via Recursive Invariants OOPSLA Shuyang Tang Shanghai Jiao Tong University, Sherman S. M. Chow Chinese University of Hong Kong, Hongfei Fu Shanghai University of Finance and Economics, Zihan Guo Sun Yat-sen University, Guoqiang Li Shanghai Jiao Tong University DOI | ||