Complete List of Publications
-
kGym: A Platform and Dataset to Benchmark Large Language Models on Linux Kernel Crash Resolution
Proceedings of the Thirty-eight Annual Conference on Neural Information Processing Systems (NeurIPS) Datasets and Benchmarks Track, 2024
-
SemCoder: Training Code Language Models with Comprehensive Semantics
Proceedings of the Thirty-eight Annual Conference on Neural Information Processing Systems (NeurIPS), 2024
-
Nazar: Monitoring and Adapting ML Models on Mobile Devices
Proceedings of the ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2025
-
Efficiently Packing Privacy Budget with DPack
Proceedings of the European Conference on Computer Systems (EuroSys), 2025
-
RAFT: Realistic Attacks to Fool Text Detectors
Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP), 2024
-
Exploiting Code Symmetries for Learning Program Semantics
  (Spotlight)
Proceedings of the International Conference on Machine Learning (ICML), 2024
-
MGit: A Model Versioning and Management System
Proceedings of the International Conference on Machine Learning (ICML), 2024
-
Cloud Actor-Oriented Database Transactions in Orleans
Proceedings of the International Conference on Very Large Databases (VLDB), 2024
-
Raidar:geneRative AI Detection viA Rewriting
Proceedings of the International Conference on Learning Representations (ICLR), 2024
-
Interpretating and Controlling Large Vision Language Models via Text Explanations
Proceedings of the International Conference on Learning Representations (ICLR), 2024
-
GDA: Generalized Diffusion for Robust Test-time Adaptation
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2024
-
SmartInv: Multimodal Learning for Smart Contract Invariant Inference
Proceedings of the 45th IEEE Symposium on Security and Privacy (S\&P '24), 2024
-
Chablis: Fast and General Transactions in Geo-Distributed Systems
  (Best paper award)
Proceedings of the Conference on Innovative Data Systems Research (CIDR), 2024
-
RogueOne: Detecting Rogue Updates via Differential Data-flow Analysis Using Trust Domains
Proceedings of the 46th International Conference on Software Engineering (ICSE 2024), 2024
-
QUACK: Hindering Deserialization Attacks via Static Duck Typing
Proceedings of the The Network and Distributed System Security Symposium (NDSS), 2024
-
From Detection to Deception: Are AI-Generated Image Detectors Adversarially Robust
Responsible Generative AI Workshop in Conjunction with IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2024
-
Towards Robust Detection of AI-Generated Videos
Generative Models for Computer Vision Workshop in Conjunction with IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2024
-
Convolutional Visual Prompt for Robust Visual Perception
Proceedings of the Thirty-seventh Annual Conference on Neural Information Processing Systems (NeurIPS), 2023
-
Mars Attacks! Software Protection Against Space Radiation
Proceedings of the Twenty-Second ACM Workshop on Hot Topics in Networksthe 18th USENIX workshop on Hot topics in operating systems (HotNets '23), 2023
-
Test-time Detection and Repair of Adversarial Samples via Masked Autoencoder
The 3rd Workshop of Adversarial Machine Learning on Computer Vision: Art of Robustness (in conjunction with CVPR 2023), 2023
-
Chardonnay: Fast and General Datacenter Transactions for On-Disk Databases
Proceedings of the 17th Symposium on Operating Systems Design and Implementation (OSDI '23), 2023
-
Divergent Representations: When Compiler Optimizations Enable Exploitation
17th IEEE Workshop on Offensive Technologies (WOOT '23), 2023
-
Effective Performance Issue Diagnosis with Value-Assisted Cost Profiling
Proceedings of the 2023 ACM European Conference on Computer Systems (EUROSYS '23), 2023
-
Doubly Right Object Recognition: A Why Prompt for Visual Rationales
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2023
-
Understanding Zero-shot Adversarial Robustness for Large-Scale Models
Proceedings of the International Conference on Learning Representations (ICLR), 2023
-
Robust Perception through Equivariance
2023 International Conference on Machine Learning (ICML), 2023
-
UPGRADVISOR: Early Adopting Dependency Updates Using Production Traces
 [bib]
Proceedings of the 16th Symposium on Operating Systems Design and Implementation (OSDI '22), 2022
Applications often have fast-paced release schedules, but adoption of software dependency updates can lag by years, leaving applications susceptible to security risks and unexpected breakage.Upgradvisor is a system that largely automates software dependency updates a novel co-designed static analysis and dynamic tracing mechanism to gauge the scope and effect of dependency updates on an application. -
XRP: In-Kernel Storage Functions with eBPF
 [bib]  (Best paper award)
Proceedings of the 16th Symposium on Operating Systems Design and Implementation (OSDI '22), 2022
With the emergence of microsecond-scale NVMe storage devices, the Linux kernel storage stack overhead has become significant, almost doubling access times. XRP is a framework that allows applications to execute user-defined storage functions, such as index lookups or aggregations, from an eBPF hook in the NVMe driver, safely bypassing most of the kernel’s storage stack. -
NeuDep: Neural Binary Memory Dependence Analysis
Proceedings of theACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE '22), 2022
-
A Tale of Two Models: Constructing Evasive Attacks on Edge Models
 [bib]
Machine Learning and Systems (MLSys), 2022
Full-precision deep learning models are typically compressed, pruned, or quantized to run on edge devices. DIVA is a new evasive attack that exploits these differences in edge adaptation to trick the adapted model running on the edge, but will be virtually undetectable by the original model, which typically serves as the authoritative model version, used for validation, debugging and retraining. -
Trex: Learning Approximate Execution Semantics from Micro-Traces for Binary Similarity
IEEE Transactions on Software Engineering (2022)
TREX is a transfer-learning-based framework that automates learning execution semantics explicitly from functions' micro-traces (a form of under-constrained dynamic traces) and transfer the learned knowledge to match semantically similar functions. Evaluation on 1,472,066 function binaries from 13 popular software projects compiled with 4 optimizations (O0-O3) and 5 obfuscations for four archiectures (x86, x64, ARM, and MIPS) shows that TREX outperforms prior art by 7.8%, 7.2%, and 14.3% in matching accuracy and is 8x faster. -
Neuroshard: Towards Automatic Multi-objective Sharding with Deep Reinforcement Learning
 [bib]
Fifth International Workshop on Exploiting Artificial Intelligence Techniques for Data Management (aiDM), 2022
Horizontal sharding is a decades-old technique to scale production databases. Neuroshard is the first system that learns shard assignments directly from the workload using reinforcement learning, and optimizes for multiple sharding objectives simultaneously. -
Causal Transportability for Visual Recognition
 [bib]
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2022
Visual representations underlie object recognition tasks, but they often contain both robust and non-robust features. We develop an algorithm to estimate the causal effect for image classification, which is transportable (i.e., invariant) across source and target environments. -
Reversing Adversarial Attacks with Multiple Self-supervised Tasks
 [bib]
ICLR Workshop PAIR2Struct, 2022
Extends our test-time defense to use multiple self-supervised learning tasks for attack reversal. -
Adversarial Attacks are Reversible with Natural Supervision
 [bib]
Proceedings of the 2021 International Conference on Computer Vision (ICCV), October, 2021
We propose a test-time defense that reverses adversarial attacks by restoring the intrinsic structures collatorally damaged by attack vectors. Our defense is still effective even if the attacker is aware of the defense mechanism. Since our defense is deployed during inference instead of training, it is compatible with pre-trained networks as well as most other defenses. Our results suggest deep networks are vulnerable to adversarial examples partly because their representations do not enforce the natural structure of images. -
StateFormer: Fine-Grained Type Recovery from Binaries Using Generative State Modeling
 [bib]
Proceedings of theACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE '21), August, 2021
StateFormer recovers source-level types from stripped binaries leveraging transfer learning. Inspired by how human analysts reverse-engineer binaries, we propose a pretraining task called Generative State Modeling (GSM) to teach an ML model assembly code operational semantics, and then transfer the learned knowledge for type inference. -
Argus: Debugging Performance Issues in Modern Desktop Applications with Annotated Causal Tracing
 [bib]  (Best paper award)
Proceedings of the USENIX Annual Technical Conference (USENIX ATC '21), 2021
We identify inherent imprecision in prior causal tracing work, and build Argus, a novel system that differentiates weak and strong causal edges in the traced graphs for combating this imprecision. Evaluation shows that Argus effectively helps diagnose open spinning-cursor issues in modern MacOS applications. -
BPF for storage: an exokernel-inspired approach
 [bib]
Proceedings of the 18th USENIX workshop on Hot topics in operating systems (HOTOS '21), 2021
This paper explores an approach inspired by the exokernel file systems to leverage BPF for new, super fast storage devices. -
Generative Interventions for Causal Learning
 [bib]
Proceedings of the 2021 Conference on Computer Vision and Pattern Recognition (CVPR '21), June, 2021
We introduce a framework for learning robust visual representations that generalize to new viewpoints, backgrounds, and scene contexts. Key insight is to steer generative models to manufacture interventions on features caused by confounding factors. Experiments, visualizations, and theoretical results show this method learns robust representations more consistent with the underlying causal relationships. -
XDA: Accurate, Robust Disassembly with Transfer Learning
 [bib]
Proceedings of the 28th Network and Distributed System Security Symposium (NDSS '21), February, 2021
XDA is a transfer-learning-based binary disassembler. Key in XDA is to model the problem of going from bits to assembly code as a language translation problem. Evaluation on real-world binaries compiled by four compilers with different optimization levels shows that XDA achieves extremely high accuracy, substantially surpassing the prior art, and is 38 times faster than hand-written disassemblers such as IDA Pro. -
Multi-task Learning Increases Adversarial Robustness
 [bib]  (Oral presentation)
Proceedings of the 16th European Conference on Computer Vision (ECCV '20), August, 2020
We present both theoretical and empirical analyses that connect the adversarial robustness of a model to the number of tasks that it is trained on. Experiments on two datasets show that attack difficulty increases as the number of target tasks increase. Moreover, our results suggest that when models are trained on multiple tasks at once, they become more robust to adversarial attacks on individual tasks. While adversarial defense remains an open challenge, our results suggest that deep networks are vulnerable partly because they are trained on too few tasks. -
Towards Practical Verification of Machine Learning: The Case of Computer Vision Systems
 [bib]
ICSE 2019 Workshop on Testing for Deep Learning and Deep Learning for Testing (DeepTest '19), 2019
Describes a blackbox way of verifying computer vision models leveraging the fact that pixel values are discreet and therefore finite. [arxiv] -
Lambdata: Optimizing Serverless Computing by Making Data Intents Explicit
 [bib]
IEEE CLOUD, 2020
Lambadata is a serverless computing system that enables developers to declare a cloud function’s data intents, including both data read and data written. Once data intents are made explicit, Lambadata performs a variety of optimizations to improve speed, including caching data locally and scheduling functions based on code and data locality. -
Fooling Semantic Segmentation in One Step via Manipulating Nuisance Factors
 [bib]
Proceedings of the 16th European Conference on Computer Vision (ECCV '20) Workshops, August, 2020
We demonstrate a simple and effective method that changes the nuisance factors for a GAN to fool semantic segmentation models in a single step, even if the models have been adversarially trained for defense. It is the first method able to attack semantic segmentation models online, 100x faster than prior attacks. Earlier version of the paper is on arxiv. -
What does CNN Shift Invariance Look Like? A Visualization Study
 [bib]
Proceedings of the 16th European Conference on Computer Vision (ECCV '20) Workshops, August, 2020
We study the shift invariance of representations learned by CNNs and find that (1) state-of-the-art antialiasing improves local shift invariance but not global shift invariance; (2) horizontally shifted images have more similar representations than vertical translation; and (3) learned representations exhibit what we call 'feature arithemetic' properties that addition or substraction in the feature-space visualize to pixel-space addition or subtraction. [Results] -
Live Trojan Attacks on Deep Neural Networks
 [bib]
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR '20) Workshops, June, 2020
Presents a new attack that leverages classic buffer overruns to corrupt the weight matrices of deep neural nets and insert trojans on the fly, causing the nets to mispredict on certain trigger inputs. Key is a regularization method to minimize the amount of buffer overruns needed for the attack. -
Egalito: Layout-Agnostic Binary Recompilation
 [bib]
25th International Conference on Architecture Support for Programming Languages and Operating Systems (ASPLOS '20), 2020
Egalito is a binary recompiler that leverages metadata widely present in modern binaries for full disassembly and transformations. We demonstrate nine binary tools including a novel continuous code randomization technique where Egalito transforms itself, and software emulation of the control-flow integrity in upcoming hardware -
Effective Concurrency Testing for Distributed Systems
 [bib]
25th International Conference on Architecture Support for Programming Languages and Operating Systems (ASPLOS '20), 2020
Morpheus is the first concurrency testing tool leveraging partial order sampling, a randomized testing method formally analyzed and empirically validated to provide strong probabilistic guarantees of error-detection, for real-world distributed systems. It found previously unknown errors in four Erlang systems including RabbitMQ and Mnesia, 11 total, all of which are flaws in their core protocols that may cause deadlocks, unexpected crashes, or inconsistenlivet states -
CodeMason: Binary-Level Profile-Guided Optimization
 [bib]
Proceedings of the 3rd ACM Workshop on Forming an Ecosystem Around Software Transformation, 2019
CodeMason is an optimizing recompiler built atop Egalito. -
Metric Learning for Adversarial Robustness
 [bib]
Proceedings of the 33rd Annual Conference on Neural Information Processing Systems (NeurIPS), 2019
Our experiments show that adversarial attacks such as PGD cause the deep representations of neural networks to shift closer to the 'false' class. Motivated by this observation, we propose to regularize the representation space under attack with metric learning to produce more robust classifiers. Key is to carefully select the samples for metric learning. Code is here. -
Bringing Engineering Rigor to Deep Learning
 [bib]
Operating System Review, Volume 53, Issue 1 (July, 2019)
Invited OSR paper that overviews our recent work on testing and verifying deep neural nets. -
DeepXplore: Automated Whitebox Testing of Deep Learning Systems
Communications of the ACM (November, 2019)
CACM research highlight on DeepXplore (https://cacm.acm.org/magazines/2019/11/240390-deepxplore). -
DeepXplore: Automated Whitebox Testing of Deep Learning Systems
GetMobile: Mobile Comp. and Comm., Volume 22, Issue 3 (January, 2019)
Invited paper on DeepXplore as a SIGMobile GetMobile highlight paper (https://dl.acm.org/citation.cfm?id=3308767). -
NEUZZ: Efficient Fuzzing with Neural Program Smoothing
 [bib]
Proceedings of the 2019 IEEE Symposium on Security and Privacy (S\&P '19), 2019
Describes Neuzz, a fuzzing tool that leverages neural nets to predict which input bytes to mutate to cover many different branches. -
YOLO: Frequently Resetting Cyber-Physical Systems for Security
 [bib]
SPIE Defense and Commercial Sensing, 2019
Describes YOLO, a system that leverages both cyber security techniques such as rebooting and physical system properties such as inertia to protect cyber physical systems. -
AppFlow: Using Machine Learning to Synthesize Robust, Reusable UI Tests
 [bib]
Proceedings of the 2018 11th Joint Meeting on Foundations of Software Engineering, 2018
AppFlow leverages machine learning to recognize UI screens and widgets, enabling developers to write intuitive, robust, and reusable UI tests that refer to canonical UI screens and widgets. -
Efficient Formal Safety Analysis of Neural Networks
 [bib]
Proceedings of the Thirty-second Annual Conference on Neural Information Processing Systems (NeurIPS), 2018
Neurify improves upon ReluVal with a tighter approximation of the output bounds via linear relaxation and refines overapproximated intermediate neuron output bounds using a LP solver. -
Formal Security Analysis of Neural Networks using Symbolic Intervals
 [bib]
Proceedings of the 27th USENIX Security Symposium, 2018
Describes ReluVal, a system that uses symbolic interval analysis and iterative refinement to verify neural networks. -
Partial Order Aware Concurrency Sampling
 [bib]
Proceedings of the 30th International Conference On Computer Aided Verification (CAV '18), 2018
Presents POS, a concurrency testing approach that aims to uniformly sample the partial order of concurrent programs. Its core is an extremely simple priority-based scheduling algorithm. It provides exponentially better probabilistic guarantee of error detection than state-or-the-art randomized testing methods. Evaluation shows it finds concurrency bugs in real-world programs, such as Firefox's JavaScript engine, much faster than other methods. -
Efficient Repair of Polluted Machine Learning Systems via Causal Unlearning
 [bib]
Proceedings of the 13th ACM ASIA Conference on Information, Computer and Communications Security, 2018
Describes an approach called causal unlearning and a corresponding system called Karma to efficiently repair a polluted learning system. -
OWL: Understanding and Detecting Concurrency Attacks
 [bib]
IEEE/IFIP International Conference on Dependable Systems and Networks (DSN '18), 2018
Presents a study on how real-world concurrency errors can be exploited by attackers and our system Owl for understanding the security implications of concurrency errors and detecting the ones vulnerable to attacks. -
Overload Control for Scaling WeChat Microservices
 [bib]
Proceedings of the ACM Symposium on Cloud Computing, 2018
Describes WeChat's system for handling occasional massive overloads. -
DeepXplore: Automated Whitebox Testing of Deep Learning Systems
 [bib]  (Best paper award)
Proceedings of the 26th ACM Symposium on Operating Systems Principles (SOSP '17), October, 2017
We increasingly rely on deep learning and deep neural networks (DNNs) in safety- and security-critical applications such as self-driving, medical diagnosis, face-based identification, and malware detection, but it remains an open challenge to thoroughly test DNNs for robustness and security. We propose Neuron Coverage, the first testing coverage metric to empirically understand how much decision logic a testing input set has exercised in a DNN. We design and build DeepXplore, the first systematic testing framework for DNNs. Given a test input, DeepXplore applies physically realizable transformations (e.g., darkening an image) to the inputs (as opposed to noise in prior adversarial ML work) to generate new inputs to maximize neuron coverage. It found thousands of flaws in state-of-art self-driving and malware detection DNNs and improved their neuron coverage by over 50%. (Also appeared in MLSec '17.) -
Shuffler: Fast and Deployable Continuous Code Re-Randomization
 [bib]
Proceedings of the Twelfth Symposium on Operating Systems Design and Implementation (OSDI '16), 2016
Describes Shuffler, a system that continuously randomizes an application's binary code at runtime, defeating code-reuse attacks. Shuffler is fast: it shuffles all code within tens of milliseconds, whereas cutting-edge ROP attacks need 10--100x more time to discover gadgets. Shuffler is egalitarian: leveraging the insight that randomization doesn't require a higher privilege authority, Shuffler shuffles itself, reducing trusted computing base and making the approach applicable to kernels and hypervisors. Shuffler is deployable: its augmented binary analysis requires no modifications to OS, compilers, and linkers. -
Grandet: A Unified, Economical Object Store for Web Applications
 [bib]
Proceedings of the Seventh ACM Symposium on Cloud Computing, 2016
Describes Grandet, a storage system that greatly reduces the cost and complexity of deploying web applications in the cloud. -
Reducing Crash Recoverability to Reachability
 [bib]
Proceedings of the 39th Annual Symposium on Principles of Programming Languages (POPL '16), January, 2016
We formally specify what it means for a program to be crash-recoverable, build an automated verifier of this spec, and validate that the commit protocols of a number of industrial storage systems are crash-recoverable. -
Making Lock-free Data Structures Verifiable with Artificial Transactions
 [bib]
Eighth Workshop on Programming Languages and Operating Systems (PLOS '15), October, 2015
Describes LockIt, a system that makes lock-free data structures easy to verify. -
Paxos Made Transparent
 [bib]
Proceedings of the 25th ACM Symposium on Operating Systems Principles (SOSP '15), October, 2015
Describes Crane, a state machine replication system that replicates general server programs for high availability. It does so transparently without requiring developers to modify their programs. Crane essentially provides Replication-as-a-Service. -
REPFRAME: An Efficient and Transparent Framework for Dynamic Program Analysis
 [bib]
Proceedings of 6th Asia-Pacific Workshop on Systems (APSys '15), July, 2015
Describes a nice application of Crane (our transparent Paxos system) for making dynamic program analysis more effective -
Secure Deduplication of General Computations
 [bib]
Proceedings of the USENIX Annual Technical Conference (USENIX ATC '15), 2015
Describes UNIC, a system that allows mutually distrusting users to deduplicate computations done by general programs. -
Towards Making Systems Forget with Machine Unlearning
 [bib]
Proceedings of the 2015 IEEE Symposium on Security and Privacy (S\&P '15), 2015
Describes our vision of forgetting systems that quickly and completely forget user data including all derived data for security, privacy, and usability. The paper focuses on making machine learning systems forget (hence the term machine unlearning) -
Efficiently, Effectively Detecting Mobile App Bugs with AppDoctor
 [bib]
Proceedings of the 2014 ACM European Conference on Computer Systems (EUROSYS '14), April, 2014
Describes AppDoctor, a powerful tool for detecting bugs in mobile apps. -
Determinism Is Not Enough: Making Parallel Programs Reliable with Stable Multithreading
 [bib]
Communications of the ACM (2014)
This paper is geared toward a general audience. If you have time to read just one paper on our concurrency work, this is the paper to read. It describes our vision of stable multithreading (StableMT), a radical approach to making multithreading reliable, and summarizes our last five years of work on designing, building, and applying stable multithreading systems. The final version of this paper will appear in CACM. -
Parrot: a Practical Runtime for Deterministic, Stable, and Reliable Threads
 [bib]
Proceedings of the 24th ACM Symposium on Operating Systems Principles (SOSP '13), November, 2013
Describes Parrot, a simple, deployable thread runtime system for improving reliability with low overhead. This is our most recent and best paper on stable and deterministic multithreading. -
Effective Dynamic Detection of Alias Analysis Errors
 [bib]
Proceedings of the Ninth Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC-FSE '13), August, 2013
Describes NeonGoby, a system for effectively detecting errors in alias analysis, one of the most important and widely used program analyses. -
Determinism Is Overrated: What Really Makes Multithreaded Programs Hard to Get Right and What Can Be Done about It?
 [bib]
the Fifth USENIX Workshop on Hot Topics in Parallelism (HOTPAR '13), June, 2013
A position paper describing our vision of stable multithreading, a radically new approach to making multithreading reliable. -
Verifying Systems Rules Using Rule-Directed Symbolic Execution
 [bib]
Eighteenth International Conference on Architecture Support for Programming Languages and Operating Systems (ASPLOS '13), 2013
Describes Woodpecker, a system that leverages path slicing to speed up symbolic execution. It enables users to check systems rules, and avoids checking program paths irrelevant to the rule, drastically reducing the amount of redundant work. -
Effective Dynamic Detection of Alias Analysis Errors
 [bib]
Columbia University Technical Report CUCS-003-13Technical report version of NeonGoby, a system for effectively detecting errors in alias analysis, one of the most important and widely used program analyses -
Sound and Precise Analysis of Parallel Programs through Schedule Specialization
 [bib]
Proceedings of the ACM SIGPLAN 2012 Conference on Programming Language Design and Implementation (PLDI '12), June, 2012
Describes a program analysis framework for analyzing multithreaded programs with high precision. The key idea is to statically analyze a multithreaded program w.r.t. only a small set of schedules to improve precision and then enforce these schedules at runtime for soundness. -
Concurrency Attacks
 [bib]
the Fourth USENIX Workshop on Hot Topics in Parallelism (HOTPAR '12), June, 2012
Studies the security consequences of concurrency errors. -
Efficient Deterministic Multithreading through Schedule Relaxation
 [bib]
Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP '11), October, 2011
Describes Peregrine, a system for efficiently making threads deterministic, addressing a key open challenge within the field of deterministic execution. -
Pervasive Detection of Process Races in Deployed Systems
 [bib]
Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP '11), October, 2011
Describes RacePro, a system for finding process races (e.g., multiple processes accessing a shared resource such as a file without proper synchronization). -
Practical Software Model Checking via Dynamic Interface Reduction
 [bib]
Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP '11), October, 2011
Our most recent and best model checking paper. It describes a new reduction technique that decomposes a full distributed system into components and then explores the executions of these components in a divide-and-conquer way. -
Concurrency Attacks
 [bib]
Columbia University Technical Report CUCS-028-11Studies the security consequences of concurrency errors. -
Finding Concurrency Errors in Sequential Code---OS-level, In-vivo Model Checking of Process Races
 [bib]
Proceedings of the 13th USENIX workshop on Hot topics in operating systems (HOTOS '11), 2011
Argues that process races (e.g., multiple processes accessing a shared resource such as a file without proper synchronization) are bad and that the research community has not given them their due share of attention. -
Optimizing Data Partitioning for Data-Parallel Computing
 [bib]
Proceedings of the 13th USENIX workshop on Hot topics in operating systems (HOTOS '11), 2011
Presents a crucial problem in data-parallel computing: how to evenly partition data, and sketches a solution to this problem. -
Context-based Online Configuration-Error Detection
 [bib]
Proceedings of the USENIX Annual Technical Conference (USENIX '11), 2011
Describes CODE, a system for automatically detecting software configuration errors. The key insight is to infer configuration access invariants that predict what access events follow what contexts. -
Stable Deterministic Multithreading through Schedule Memoization
 [bib]
Proceedings of the Ninth Symposium on Operating Systems Design and Implementation (OSDI '10), October, 2010
Describes Tern, a system for making threads more deterministic and stable. The key idea is to memoize past schedules and reuse them when possible, much like the natural tendencies in animals and humans to repeat familiar routes to avoid possible hazards along unknown routes. -
Bypassing Races in Live Applications with Execution Filters
 [bib]
Proceedings of the Ninth Symposium on Operating Systems Design and Implementation (OSDI '10), October, 2010
Describes LOOM, a live-workaround system for fixing races in live applications. LOOM is safe (live-update will not introduce new errors), fast (negligible overhead for most benchmarks), and flexible (able to fix all bugs evaluated). -
Bypassing Races in Live Applications with Execution Filters
 [bib]
Columbia University Technical Report CUCS-036-10A more complete description of LOOM compared to our OSDI '10 paper. -
Scalable and Systematic Detection of Buggy Inconsistencies in Source Code
 [bib]
Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '10), October, 2010
Describes how we found many copy-and-paste bugs in a large commercial code base. -
MODIST: Transparent Model Checking of Unmodified Distributed Systems
 [talk | bib]
Proceedings of the Sixth Symposium on Networked Systems Design and Implementation (NSDI '09), April, 2009
Describes how we applied our in-situ model checking approach to find 10 protocol-level errors in three real distributed systems, including a production system that has been managing more than 100 thousand machines for over two years. Note this version has two minor calculation errors fixed. -
A Software Checking Framework Using Distributed Model Checking and Checkpoint/Resume of Virtualized PrOcess Domains
 [bib]
CS Department, Columbia University Technical Report CUCS-032-09Describes a version of eXplode for in-vivo model checking. -
Distributed eXplode: A High-Performance Model Checking Engine to Scale Up State-Space Coverage
 [bib]
CS Department, Columbia University Technical Report CUCS-051-08Describes a distributed version of eXplode. -
EXPLODE: a Lightweight, General System for Finding Serious Storage System Errors
 [talk | bib]
Proceedings of the Seventh Symposium on Operating Systems Design and Implementation (OSDI '06), November, 2006
Describes our in-situ model checking approach, which made it easy to thoroughly check real systems. We applied eXplode to 17 storage systems and found serious data-loss errors in every system checked. This paper is my favorite in describing our model checking approach, which forms the basis of my PhD thesis work. -
Using Model Checking to Find Serious File System Errors
 [bib]
ACM Transactions on Computer Systems, Volume 24, Issue 4 (November, 2006)
A journal version of our FiSC work, forwarded from OSDI 04. -
Automatically Generating Malicious Disks using Symbolic Execution
 [talk | bib]
Proceedings of the 2006 IEEE Symposium on Security and Privacy (S\&P '06), May, 2006
Describes how we generated disks-of-death using symbolic execution. These disks, when mounted, can crash or take over control of your machine. -
eXplode: A Lightweight, General Approach for Finding Serious Errors in Storage Systems
 [bib]
Proceedings of the first Workshop on the Evaluation of Software Defect Detection Tools (BUGS '05), June, 2005
Describes a preliminary version of the eXplode storage system checker -
Using Model Checking to Find Serious File System Errors
 [talk | bib]  (Best paper award)
Proceedings of the Sixth Symposium on Operating Systems Design and Implementation (OSDI '04), December, 2004
Describes how we leveraged model checking to find serious errors in three widely used, well tested Linux file system errors. Some of these errors can vaporize your entire file systems. -
MECA: an Extensible, Expressive System and Language for Statically Checking Security Properties
 [bib]
Proceedings of the 10th ACM conference on Computer and communications security (CCS '03), October, 2003
Describes an extensible and lightweight annotation system that allows programmers to write a small set of domain-specific annotations to effectively annotate large bodies of code. -
An Empirical Study of Operating Systems Errors
 [bib]
Proceedings of the 18th ACM Symposium on Operating Systems Principles (SOSP '01), November, 2001
Presents our study of the errors found using meta-compilation. Some interesting conclusions include drivers are up to three to seven times buggier than the rest of the kernel. -
Correlation exploitation in error ranking
 [bib]
Proceedings of the 12th ACM SIGSOFT International Symposium on Foundations of Software Engineering (SIGSOFT '04/FSE-12), November, 2004
Describes how we can exploit the correlations of error messages emitted by static analysis tools to cluster false positives together, thus improve the effectiveness of the static analysis tools. -
Kinesis: A new approach to replica placement in distributed storage systems
 [bib]
ACM Transactions on Storage Systems, Volume 4, Issue 4 (January, 2009)
Describes a new replica placement strategy that uses multiple linear hash functions to achieve high performance, scalability, and availability.