Miscellaneous Projects

Encoding Execution

SENSYS V. Sundaram, P. Eugster and X. Zhang. Efficient Diagnostic Tracing Support forWireless Sensor Networks ,
the 8th ACM Conference on Embedded Networked Sensor Systems, 2010.

[abstract][pdf]
We found that recursions are rarely used in sensor programs such that a highly efficient interprocedural path encoding algorithm is feasible.

ICSE W. N. Sumner, Y. Zheng, D. Weeratunge and X. Zhang. Precise Calling Context Encoding ,
International Conference on Software Engineering, 2010.

[abstract][pdf]
We proposed a technique that maintains a number that always encodes the current calling context on the fly during program execution. Any client analysis that is interested in the current context does not need to perform expensive stack traversal, but rather just decodes the number. The instrumentation incurs less than 2% overhead on average.

CGO S. Tallam, X. Zhang, and R. Gupta. Extending Path Profiling across Loop Backedges and Procedure Boundaries ,
IEEE/ACM International Symposium on Code Generation and Optimization, 2004.

[abstract][pdf]
We proposed an encoding technique for control flow paths that cross loop backedges.

Debugging Web Applications

WWW Y. Zheng, T. Bao and X. Zhang. Statically Locating Web Application Bugs Caused by Asynchronous Calls ,
the 20th International World Wide Web Conference, 2011.

[abstract][pdf]
The asynchronous execution model of Ajax web apps may cause serious problems in the presence of network delays. For example, we found a photo gallery web app may mistakenly delete wrong images. We developed a static analysis to detect such problems.

Program Parallelization

CGO X. Zhang, A. Navabi, and S. Jagannathan. Alchemist: A Transparent Dependence Distance Profling Infrastructure ,
The International Symposium on Code Generation and Optimization, 2009

[abstract][pdf]
We propose a highly accurate dependence profiler for program parallelizaton. The profiler captures context sensitivity and even control dependence sensitivity. Such accuracy is not provided in traditional profilers although it is important for program parallelization.

PPOPP A. Navabi, X. Zhang, and S. Jagannathan. Quasi-Static Scheduling for Safe Futures ,
ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, 2008.

[abstract][pdf]
Future is a language support that allows a function call to be spawned as a concurrent thread. However, if the function and its continuation share common variables, safety could be an issue. We analyze future calls and insert synchronizations to ensure safety.

Matching Program Versions

ICSM V. Nagarajan, R. Gupta, X. Zhang, M. Madou, B. De Sutter, and K. De Bosschere. Matching Control Flow of Program Versions ,
International Conference on Software Maintenance, 2007

[abstract][pdf]
We proposed a technique to match the control flows of a program and its obfuscated version. We applied the technique to a number of popular obfuscation technqiues.

FSE X. Zhang and R. Gupta. Matching Execution Histories of Program Versions ,
Joint 10th European Software Engineering Conference and 13th ACM SIGSOFT Symposium on the Foundations of Software Engineering

[abstract][pdf]
We developed a method for matching dynamic histories of executions of two program versions. Unlike some static approaches for matching program versions, our approach does not require source code. It relies on matching control flow, values, and dependences. It features an iterative graph based matching algorithm.