Living on the edge: Rapid-toggling probes with cross modification on x86
Dynamic probe injection is now a widely used method to debug performance in production. Current techniques for dynamic probing of native code, however, rely on an expensive stop-the-world approach: binary changes are made within a safe state of the program—typically in which all the program threads are halted—to ensure that another thread executing the modified code region doesn’t step into a partially-modified code.
Stop-the-world patching is not scalable. In contrast, low overhead, scalable probes that can be rapidly toggled on and off in-place would open up new use cases for statistical profilers and language implementations, even traditional ahead-of-time, native-code compilers. In this paper we introduce safe cross-modification protocols that mutate x86 code between threads but do not require quiescing threads, resulting in radically lower overheads than existing solutions. A key problem is handling instructions that straddle cache lines. We empirically evaluate existing x86 architectures to derive a safe policy given current processor behavior, and we argue that future architectures should clarify the semantics of instruction fetching to make cheap cross-modification easier and future proof.
Wed 15 JunDisplayed time zone: Tijuana, Baja California change
10:30 - 12:00
Down to the Metal IResearch Papers at Grand Ballroom Santa Ynez
Chair(s): Stephen McCamant University of Minnesota
|Into the depths of C: elaborating the de facto standards|
Kayvan Memarian University of Cambridge, Justus Matthiesen University of Cambridge, James Lingard University of Cambridge (when this work was done), Kyndylan Nienhuis University of Cambridge, David Chisnall University of Cambridge, Robert N. M. Watson University of Cambridge, Peter Sewell University of CambridgeLink to publication Media Attached
|Living on the edge: Rapid-toggling probes with cross modification on x86|
Buddhika Chamith , Bo Joel Svensson Indiana University, Luke Dalessandro Indiana University, Ryan R. Newton Indiana UniversityPre-print Media Attached
|Polymorphic Type Inference for Machine Code|
Matt Noonan GrammaTech, Inc, Alexey Loginov GrammaTech, Inc, David Cok GrammaTech, IncPre-print Media Attached