VLDB 2026 Research / reviewers in the wild / expert
Chen Tian 0002
dblp:94/1247-2
· DBLP profile ↗
23ranked-venue papers
6as first author
1since 2021 · last 2022
0000-0003-2710-7628ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 14 · 4 first-authorSystems, architecture and hardware · 10 · 2 first-authorComputer networks · 1 · 1 since 2021Security and privacy · 1Applied, interdisciplinary, general and emerging computing · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Computer architecture, parallel and distributed computing, and storage systems
9 papers |
Distributed systems · 54% Memory systems · 20% Parallel and multicore computing · 11% | |
| Software engineering, system software, and programming languages
9 papers |
Concurrent programming · 35% Debugging and program repair · 21% Software testing · 14% | |
| Network and information security
1 paper |
Systems and software security · 100% | |
| Databases, data mining, and information retrieval
1 paper |
Graph data management · 100% |
Topics — the 30 heaviest of 42, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Distributed systems
fault tolerance |
1.0 | 3 | 2019 | FlyMC: Highly Scalable Testing of Complex Interleavings in Distributed Systems · EuroSys 2019 FCatch: Automatically Detecting Time-of-fault Bugs in Cloud Systems · ASPLOS 2018 CoRAL: Confined Recovery in Distributed Asynchronous Graph Processing · ASPLOS 2017 |
Concurrent programming
concurrency bug detection |
0.6 | 2 | 2018 | FCatch: Automatically Detecting Time-of-fault Bugs in Cloud Systems · ASPLOS 2018 DCatch: Automatically Detecting Distributed Concurrency Bugs in Cloud Systems · ASPLOS 2017 |
Software testing › system testing
distributed system testing |
0.4 | 1 | 2019 | FlyMC: Highly Scalable Testing of Complex Interleavings in Distributed Systems · EuroSys 2019 |
Distributed systems
distributed system testing |
0.4 | 1 | 2019 | FlyMC: Highly Scalable Testing of Complex Interleavings in Distributed Systems · EuroSys 2019 |
Debugging and program repair
record and replay |
0.4 | 3 | 2018 | iReplayer: in-situ and identical record-and-replay for multithreaded applications · PLDI 2018 Dynamic recognition of synchronization operations for improved data race detection · ISSTA 2008 Enabling tracing Of long-running multithreaded programs via dynamic execution reduction · ISSTA 2007 |
Systems and software security › operating system security
mobile OS security |
0.3 | 1 | 2018 | AceDroid: Normalizing Diverse Android Access Control Checks for Inconsistency Detection · NDSS 2018 |
Systems and software security
vulnerability discovery |
0.3 | 1 | 2018 | AceDroid: Normalizing Diverse Android Access Control Checks for Inconsistency Detection · NDSS 2018 |
Parallel and multicore computing
speculative parallelization |
0.3 | 3 | 2011 | Enhanced speculative parallelization via incremental recovery · PPoPP 2011 Supporting speculative parallelization in the presence of dynamic data structures · PLDI 2010 Copy or Discard execution model for speculative parallelization on multicores · MICRO 2008 |
Graph data management › graph processing
asynchronous graph processing |
0.3 | 1 | 2017 | CoRAL: Confined Recovery in Distributed Asynchronous Graph Processing · ASPLOS 2017 |
Graph data management
distributed graph processing |
0.3 | 1 | 2017 | CoRAL: Confined Recovery in Distributed Asynchronous Graph Processing · ASPLOS 2017 |
Program analysis › dynamic analysis
happens-before analysis |
0.3 | 1 | 2017 | DCatch: Automatically Detecting Distributed Concurrency Bugs in Cloud Systems · ASPLOS 2017 |
Distributed systems
bug detection |
0.3 | 1 | 2017 | DCatch: Automatically Detecting Distributed Concurrency Bugs in Cloud Systems · ASPLOS 2017 |
Distributed systems › concurrency
distributed concurrency bugs |
0.3 | 1 | 2017 | DCatch: Automatically Detecting Distributed Concurrency Bugs in Cloud Systems · ASPLOS 2017 |
Distributed systems › fault tolerance
rollback recovery |
0.3 | 1 | 2017 | CoRAL: Confined Recovery in Distributed Asynchronous Graph Processing · ASPLOS 2017 |
Memory systems
cache coherence |
0.2 | 1 | 2014 | PREDATOR: predictive false sharing detection · PPoPP 2014 |
Memory systems › cache coherence
false sharing |
0.2 | 1 | 2014 | PREDATOR: predictive false sharing detection · PPoPP 2014 |
Memory systems › cache coherence
false sharing detection |
0.2 | 1 | 2014 | PREDATOR: predictive false sharing detection · PPoPP 2014 |
Performance modeling and evaluation
performance analysis tools |
0.2 | 1 | 2014 | PREDATOR: predictive false sharing detection · PPoPP 2014 |
Memory systems › cache management › cache replacement
adaptive replacement |
0.1 | 1 | 2011 | Dynamic access distance driven cache replacement · ACM Trans. Archit. Code Optim. 2011 |
Memory systems › cache management
cache replacement |
0.1 | 1 | 2011 | Dynamic access distance driven cache replacement · ACM Trans. Archit. Code Optim. 2011 |
Parallel and multicore computing › speculative parallelization
thread-level speculation |
0.1 | 1 | 2011 | Enhanced speculative parallelization via incremental recovery · PPoPP 2011 |
Compilers and program optimization › parallelization
speculative parallelization |
0.1 | 1 | 2010 | Supporting speculative parallelization in the presence of dynamic data structures · PLDI 2010 |
Debugging and program repair
bug reproduction |
0.1 | 1 | 2018 | iReplayer: in-situ and identical record-and-replay for multithreaded applications · PLDI 2018 |
Cloud and datacenter computing › quality of service
cloud service availability |
0.1 | 1 | 2018 | FCatch: Automatically Detecting Time-of-fault Bugs in Cloud Systems · ASPLOS 2018 |
Program analysis
type-based analysis |
0.1 | 1 | 2017 | UI driven Android application reduction · ASE 2017 |
Distributed systems › distributed algorithms › distributed snapshot
consistent snapshots |
0.1 | 1 | 2017 | CoRAL: Confined Recovery in Distributed Asynchronous Graph Processing · ASPLOS 2017 |
Cloud and datacenter computing › cloud deployment model
distributed cloud |
0.1 | 1 | 2017 | DCatch: Automatically Detecting Distributed Concurrency Bugs in Cloud Systems · ASPLOS 2017 |
Distributed systems
distributed coordination |
0.1 | 1 | 2017 | CoRAL: Confined Recovery in Distributed Asynchronous Graph Processing · ASPLOS 2017 |
Concurrent programming › concurrency bug detection
data race detection |
0.1 | 1 | 2008 | Dynamic recognition of synchronization operations for improved data race detection · ISSTA 2008 |
Concurrent programming › concurrency bug detection › data race detection
dynamic race detection |
0.1 | 1 | 2008 | Dynamic recognition of synchronization operations for improved data race detection · ISSTA 2008 |
Methods — techniques the papers use, named apart from their topics
state symmetry · 0.8parallel flips · 0.8event independence · 0.8fault injection · 0.7concurrency bug modeling · 0.7trace analysis · 0.6runtime tracing · 0.6lightweight checkpointing · 0.6happens-before rules · 0.6confined recovery · 0.6record and replay · 0.3static analysis · 0.3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2022 | Lilac: Parallelizing Atomic Cross-Chain SwapsabstractHashed Timelock Contract (HTLC) is a widely-used protocol for cross-chain asset swaps. However, it relies on serial asset-locking to guarantee atomicity, which causes high latency and poor fairness. Aiming at the drawbacks of HTLC, we propose Lilac, a cross-chain asset swap protocol that supports parallel asset-locking. Lilac replaces the unique asset-unlocking credential in HTLC with multiple sub-credentials generated by all participating users, and the sequence of sub-credentials is used as the complete asset-unlocking credential. Users obtain the complete credential only when all assets have been locked, and the credential construction process is independent of the order in which assets are locked, so atomicity can be guaranteed when users lock their assets in parallel. Experiments show when a swap involves 2 to 4 blockchains, Lilac reduces the swap latency by 36.75% to 62.20%. Moreover, Lilac reduces the waiting time gap between different users so the fairness of a swap is improved. Donghui Ding, Bo Long, Feng Zhuo, Zhongcheng Li, Hanwen Zhang 0001, Chen Tian 0002, Yi Sun 0004 |
ISCC | 6 |
| 2019 | FlyMC: Highly Scalable Testing of Complex Interleavings in Distributed SystemsabstractWe present a fast and scalable testing approach for datacenter/cloud systems such as Cassandra, Hadoop, Spark, and ZooKeeper. The uniqueness of our approach is in its ability to overcome the path/state-space explosion problem in testing workloads with complex interleavings of messages and faults. We introduce three powerful algorithms: state symmetry, event independence, and parallel flips, which collectively makes our approach on average 16x (up to 78x) faster than other state-of-the-art solutions. We have integrated our techniques with 8 popular datacenter systems, successfully reproduced 12 old bugs, and found 10 new bugs --- all were done without random walks or manual checkpoints. Jeffrey F. Lukman, Huan Ke, Cesar A. Stuardo, Riza O. Suminto, Daniar Heri Kurniawan, Dikaimin Simon, Satria Priambada, Chen Tian 0002, Tanakorn Leesatapornwongsa, Aarti Gupta, Shan Lu 0001, Haryadi S. Gunawi |
EuroSys | 8 |
| 2018 | FCatch: Automatically Detecting Time-of-fault Bugs in Cloud SystemsabstractIt is crucial for distributed systems to achieve high availability. Unfortunately, this is challenging given the common component failures (i.e., faults). Developers often cannot anticipate all the timing conditions and system states under which a fault might occur, and introduce time-of-fault (TOF) bugs that only manifest when a node crashes or a message drops at a special moment. Although challenging, detecting TOF bugs is fundamental to developing highly available distributed systems. Unlike previous work that relies on fault injection to expose TOF bugs, this paper carefully models TOF bugs as a new type of concurrency bugs, and develops FCatch to automatically predict TOF bugs by observing correct execution. Evaluation on representative cloud systems shows that FCatch is effective, accurately finding severe TOF bugs. Guangpu Li, Shan Lu 0001, Chen Tian 0002 |
ASPLOS | 6 |
| 2018 | AceDroid: Normalizing Diverse Android Access Control Checks for Inconsistency Detection
Yousra Aafer, Jianjun Huang 0001, Yi Sun 0004, Xiangyu Zhang 0001, Ninghui Li 0001, Chen Tian 0002 |
NDSS | 6 |
| 2018 | iReplayer: in-situ and identical record-and-replay for multithreaded applicationsabstractReproducing executions of multithreaded programs is very challenging due to many intrinsic and external non-deterministic factors. Existing RnR systems achieve significant progress in terms of performance overhead, but none targets the in-situ setting, in which replay occurs within the same process as the recording process. Also, most existing work cannot achieve identical replay, which may prevent the reproduction of some errors. Hongyu Liu 0005, Sam Silvestro, Wei Wang 0054, Chen Tian 0002, Tongping Liu |
PLDI | 4 |
| 2018 | Analysis of classic algorithms on highly-threaded many-core architectures
Lin Ma 0007, Roger D. Chamberlain, Kunal Agrawal 0001, Chen Tian 0002, Ziang Hu |
Future Gener. Comput. Syst. | 4 |
| 2017 | DCatch: Automatically Detecting Distributed Concurrency Bugs in Cloud SystemsabstractIn big data and cloud computing era, reliability of distributed systems is extremely important. Unfortunately, distributed concurrency bugs, referred to as DCbugs, widely exist. They hide in the large state space of distributed cloud systems and manifest non-deterministically depending on the timing of distributed computation and communication. Effective techniques to detect DCbugs are desired. This paper presents a pilot solution, DCatch, in the world of DCbug detection. DCatch predicts DCbugs by analyzing correct execution of distributed systems. To build DCatch, we design a set of happens-before rules that model a wide variety of communication and concurrency mechanisms in real-world distributed cloud systems. We then build runtime tracing and trace analysis tools to effectively identify concurrent conflicting memory accesses in these systems. Finally, we design tools to help prune false positives and trigger DCbugs. We have evaluated DCatch on four representative open-source distributed cloud systems, Cassandra, Hadoop MapReduce, HBase, and ZooKeeper. By monitoring correct execution of seven workloads on these systems, DCatch reports 32 DCbugs, with 20 of them being truly harmful. Guangpu Li, Jeffrey F. Lukman, Shan Lu 0001, Haryadi S. Gunawi, Chen Tian 0002 |
ASPLOS | 7 |
| 2017 | CoRAL: Confined Recovery in Distributed Asynchronous Graph ProcessingabstractExisting distributed asynchronous graph processing systems employ checkpointing to capture globally consistent snapshots and rollback all machines to most recent checkpoint to recover from machine failures. In this paper we argue that recovery in distributed asynchronous graph processing does not require the entire execution state to be rolled back to a globally consistent state due to the relaxed asynchronous execution semantics. We define the properties required in the recovered state for it to be usable for correct asynchronous processing and develop CoRAL, a lightweight checkpointing and recovery algorithm. First, this algorithm carries out confined recovery that only rolls back graph execution states of the failed machines to affect recovery. Second, it relies upon lightweight checkpoints that capture locally consistent snapshots with a reduced peak network bandwidth requirement. Our experiments using real-world graphs show that our technique recovers from failures and finishes processing 1.5x to 3.2x faster compared to the traditional asynchronous checkpointing and recovery mechanism when failures impact 1 to 6 machines of a 16 machine cluster. Moreover, capturing locally consistent snapshots significantly reduces intermittent high peak bandwidth usage required to save the snapshots -- the average reduction in 99th percentile bandwidth ranges from 22% to 51% while 1 to 6 snapshot replicas are being maintained. Keval Vora, Chen Tian 0002, Rajiv Gupta 0001, Ziang Hu |
ASPLOS | 2 |
| 2017 | UI driven Android application reductionabstractWhile smartphones and mobile apps have been an integral part of our life, modern mobile apps tend to contain a lot of rarely used functionalities. For example, applications contain advertisements and offer extra features such as recommended news stories in weather apps. While these functionalities are not essential to an app, they nonetheless consume power, CPU cycles and bandwidth. In this paper, we design a UI driven approach that allows customizing an Android app by removing its unwanted functionalities. In particular, our technique displays the UI and allows the user to select elements denoting functionalities that she wants to remove. Using this information, our technique automatically removes all the code elements related to the selected functionalities, including all the relevant background tasks. The underlying analysis is a type system, in which each code element is tagged with a type indicating if it should be removed. From the UI hints, our technique infers types for all other code elements and reduces the app accordingly. We implement a prototype and evaluate it on 10 real-world Android apps. The results show that our approach can accurately discover the removable code elements and lead to substantial resource savings in the reduced apps. Jianjun Huang 0001, Yousra Aafer, David Mitchel Perry, Xiangyu Zhang 0001, Chen Tian 0002 |
ASE | 5 |
| 2014 | PREDATOR: predictive false sharing detectionabstractFalse sharing is a notorious problem for multithreaded applications that can drastically degrade both performance and scalability. Existing approaches can precisely identify the sources of false sharing, but only report false sharing actually observed during execution; they do not generalize across executions. Because false sharing is extremely sensitive to object layout, these detectors can easily miss false sharing problems that can arise due to slight differences in memory allocation order or object placement decisions by the compiler. In addition, they cannot predict the impact of false sharing on hardware with different cache line sizes. Tongping Liu, Chen Tian 0002, Ziang Hu, Emery D. Berger |
PPoPP | 2 |
| 2011 | Enhanced speculative parallelization via incremental recoveryabstractThe widespread availability of multicore systems has led to an increased interest in speculative parallelization of sequential programs using software-based thread level speculation. Many of the proposed techniques are implemented via state separation where non-speculative computation state is maintained separately from the speculative state of threads performing speculative computations. If speculation is successful, the results from speculative state are committed to non-speculative state. However, upon misspeculation, discard-all scheme is employed in which speculatively computed results of a thread are discarded and the computation is performed again. While this scheme is simple to implement, one disadvantage of discard-all is its inability to tolerate high misspeculation rates due to its high runtime overhead. Thus, it is not suitable for use in applications where misspeculation rates are input dependent Chen Tian 0002, Changhui Lin, Min Feng 0001, Rajiv Gupta 0001 |
PPoPP | 1 |
| 2011 | Isolating bugs in multithreaded programs using execution suppressionabstractAbstract Memory‐related program failures in multithreaded programs can be caused by a variety of bugs. Concurrency bugs can occur due to unexpected or incorrect thread interleavings during execution. Other kinds of memory bugs, such as buffer overflows and uninitialized reads, may also occur in multithreaded as well as single‐threaded programs. Most prior techniques for isolating these bugs are specialized, addressing only one type of concurrency bug or certain types of other memory bugs. The memory corruption caused by these bugs can also undergo significant propagation during program execution. When a program failure finally occurs due to memory corruption, the true root cause of the failure may be effectively concealed as significant portions of memory may have become corrupted. We propose a general framework that can isolate the root cause of any failure in a multithreaded program that involves memory corruption and reveals at least a subset of this memory corruption. This includes three important types of concurrency bugs—data races, atomicity violations, and order violations—as well as other kinds of memory bugs. To account for propagation of memory corruption, our approach uses a dynamic technique called ‘execution suppression’ that iteratively reveals memory corruption in a failing execution to isolate the true root cause of the failure. Copyright © 2011 John Wiley & Sons, Ltd. Dennis Jeffrey, Chen Tian 0002, Rajiv Gupta 0001 |
Softw. Pract. Exp. | 3 |
| 2011 | Dynamic access distance driven cache replacementabstractIn this article, we propose a new cache replacement policy that makes the replacement decision based on the reuse information of the cache lines and the requested data. We present the architectural support and evaluate the performance of our approach using SPEC benchmarks. We also develop two reuse information predictors: a profile-based static predictor and a runtime predictor. The applicability of each predictor is discussed in this paper. We further extend our reuse information predictors so that the cache can adaptively choose between the reuse information based replacement policy and an approximation of LRU policy. According to the experimental results, our adaptive reuse information based replacement policy performs either better than or close to the LRU policy. Our experiments show that L2 cache misses are reduced by 12.32% and 19.95% using the profiling-based static and runtime adaptive predictors respectively. Min Feng 0001, Chen Tian 0002, Changhui Lin, Rajiv Gupta 0001 |
ACM Trans. Archit. Code Optim. | 2 |
| 2010 | Context Model Based SOA Policy FrameworkabstractWith the popularity of SOA, SOA policy becomes one of the core technical enablers for SOA governance and management. Different in several aspects from traditional policy for distributed system management, policy applied in SOA solutions needs to take into account various policy types and enforcement points in different layers of SOA solution stack and different phases of SOA lifecycle. As well, it has the unique requirements on compliance to match existing SOA technologies and characteristics, as simplicity, standardization, high performance, etc. In this paper, a novel context model based SOA policy management framework by innovatively extending W3C Service Modeling Language (SML) and ISO Schematron is introduced. Firstly, a common context model distilled from SOA policy types typically including service policy, service governance policy, application policy and business policy, is presented. Then, the core components - context model based policy engine and definition tool are described. Finally, it is illustrated how the unified definition tools and policy engine are manipulated within the context model based SOA policy framework to manage and enforce policies in typical scenarios as service meta-data management, service match making and business process management. Based on the project, we participated in the works for defining W3C SML V1.1 working draft and proposed the works introduced in this paper to W3C SML Working Group. This paper demonstrates how these technologies and architectures significantly enhance the capability of SOA governance and management throughout whole SOA lifecycle and spanning the layers of SOA solution stack. Yu Chen Zhou, Xin Peng Liu, Xi Ning Wang, Chen Tian 0002, Xiao Xing Liang |
ICWS | 5 |
| 2010 | Speculative parallelization using state separation and multiple value predictionabstractWith the availability of chip multiprocessor (CMP) and simultaneous multithreading (SMT) machines, extracting thread level parallelism from a sequential program has become crucial for improving performance. However, many sequential programs cannot be easily parallelized due to the presence of dependences. To solve this problem, different solutions have been proposed. Some of them make the optimistic assumption that such dependences rarely manifest themselves at runtime. However, when this assumption is violated, the recovery causes very large overhead. Other approaches incur large synchronization or computation overhead when resolving the dependences. Consequently, for a loop with frequently arising cross-iteration dependences, previous techniques are not able to speed up the execution. In this paper we propose a compiler technique which uses state separation and multiple value prediction to speculatively parallelize loops in sequential programs that contain frequently arising cross-iteration dependences. The key idea is to generate multiple versions of a loop iteration based on multiple predictions of values of variables involved in cross-iteration dependences (i.e., live-in variables). These speculative versions and the preceding loop iteration are executed in separate memory states simultaneously. After the execution, if one of these versions is correct (i.e., its predicted values are found to be correct), then we merge its state and the state of the preceding iteration because the dependence between the two iterations is correctly resolved. The memory states of other incorrect versions are completely discarded. Based on this idea, we further propose a runtime adaptive scheme that not only gives a good performance but also achieves better CPU utilization. We conducted experiments on 10 benchmark programs on a real machine. The results show that our technique can achieve 1.7x speedup on average across all used benchmarks. Chen Tian 0002, Min Feng 0001, Rajiv Gupta 0001 |
ISMM | 1 |
| 2010 | Supporting speculative parallelization in the presence of dynamic data structuresabstractThe availability of multicore processors has led to significant interest in compiler techniques for speculative parallelization of sequential programs. Isolation of speculative state from non-speculative state forms the basis of such speculative techniques as this separation enables recovery from misspeculations. In our prior work on CorD [35,36] we showed that for array and scalar variable based programs copying of data between speculative and non-speculative memory can be highly optimized to support state separation that yields significant speedups on multicore machines available today. However, we observe that in context of heap-intensive programs that operate on linked dynamic data structures, state separation based speculative parallelization poses many challenges. The copying of data structures from non-speculative to speculative state (copy-in operation) can be very expensive due to the large sizes of dynamic data structures. The copying of updated data structures from speculative state to non-speculative state (copy-out operation) is made complex due to the changes in the shape and size of the dynamic data structure made by the speculative computation. In addition, we must contend with the need to translate pointers internal to dynamic data structures between their non-speculative and speculative memory addresses. In this paper we develop an augmented design for the representation of dynamic data structures such that all of the above operations can be performed efficiently. Our experiments demonstrate significant speedups on a real machine for a set of programs that make extensive use of heap based dynamic data structures. Chen Tian 0002, Min Feng 0001, Rajiv Gupta 0001 |
PLDI | 1 |
| 2009 | Automated dynamic detection of busy-wait synchronizationsabstractAbstract With the advent of multicores, multithreaded programming has acquired increased importance. In order to obtain good performance, the synchronization constructs in multithreaded programs need to be carefully implemented. These implementations can be broadly classified into two categories: busy–wait and schedule‐based. For shared memory architectures, busy–wait synchronizations are preferred over schedule‐based synchronizations because they can achieve lower wakeup latency, especially when the expected wait time is much shorter than the scheduling time. While busy–wait synchronizations can improve the performance of multithreaded programs running on multicore machines, they create a challenge in program debugging, especially in detecting and identifying the causes of data races. Although significant research has been done on data race detection, prior works rely on one important assumption—the debuggers are aware of all the synchronization operations performed during a program run. This assumption is a significant limitation as multithreaded programs, including the popular SPLASH‐2 benchmark have busy–wait synchronizations such as barriers and flag synchronizations implemented in the user code. We show that the lack of knowledge of these synchronization operations leads to unnecessary reporting of numerous races. To tackle this problem, we propose a dynamic technique for identifying user‐defined synchronizations that are performed during a program run. Both software and hardware implementations are presented. Furthermore, our technique can be easily exploited by a record/replay system to significantly speedup the replay. It can also be leveraged by a transactional memory system to effectively resolve a livelock situation. Our evaluation confirms that our synchronization detector is highly accurate with no false negatives and very few false positives. We further observe that the knowledge of synchronization operations results in 23% reduction in replay time. Finally, we show that using synchronization knowledge livelocks can be efficiently avoided during runtime monitoring of programs. Copyright © 2009 John Wiley & Sons, Ltd. Chen Tian 0002, Vijay Nagarajan, Rajiv Gupta 0001, Sriraman Tallam |
Softw. Pract. Exp. | 1 |
| 2008 | Avoiding Program Failures Through Safe Execution PerturbationsabstractWe present an online framework to capture and recover from program failures and prevent them from occurring in the future through safe execution perturbations. The perturbations are safe as they respect the semantics of the program. We use a checkpointing/logging mechanism to capture a program execution to an event log. If the execution results in a failure, the framework automatically searches for perturbation of the execution by altering the event log and replaying the execution using the altered log to avoid the failure. If found, the perturbation is recorded as a dynamic patch, which is later applied by all future executions of this application to prevent the failure from occurring again. Our experiments show that the proposed framework is very effective in avoiding concurrency faults, heap memory overflow faults, and malicious requests. The entailed overhead for normal execution is very low (2-18%). Sriraman Tallam, Chen Tian 0002, Rajiv Gupta 0001, Xiangyu Zhang 0001 |
COMPSAC | 2 |
| 2008 | Dynamic slicing of multithreaded programs for race detectionabstractPrior work has shown that computing dynamic slices of erroneous program values can greatly assist in locating the root cause of erroneous behavior by identifying faulty statements in sequential programs. These dynamic slices represent backward transitive closure over exercised read-after-write data dependences and control dependences. However, for a multithreaded program executing on a processor, data races represent an additional source of errors which are not captured by dynamic slices. We present an extended form of dynamic slice for multithreaded programs which can assist in locating faults, including those caused by data races. We demonstrate the effectiveness of our approach via case studies and also describe an efficient algorithm for computing dynamic slices. Sriraman Tallam, Chen Tian 0002, Rajiv Gupta 0001 |
ICSM | 2 |
| 2008 | Scalable dynamic information flow tracking and its applicationsabstractWe are designing scalable dynamic information flow tracking techniques and employing them to carry out tasks related to debugging (bug location and fault avoidance), security (software attack detection), and data validation (lineage tracing of scientific data). The focus of our ongoing work is on developing online dynamic analysis techniques for long running multithreaded programs that may be executed on a single core or on multiple cores to exploit thread level parallelism. Rajiv Gupta 0001, Neelam Gupta, Xiangyu Zhang 0001, Dennis Jeffrey, Vijay Nagarajan, Sriraman Tallam, Chen Tian 0002 |
IPDPS | 7 |
| 2008 | Dynamic recognition of synchronization operations for improved data race detectionabstractDebugging multithreaded programs, which involves detection and identification of the cause of data races, has proved to be a hard problem. Although there has been significant amount of research on this topic, prior works rely on one important assumption - the debuggers must be aware of all the synchronization operations that take place during a program run. This assumption is a significant limitation as multithreaded programs, including the popular SPLASH-2 benchmark, have barriers and flag synchronizations implemented in the user code. We show that the lack of knowledge of these synchronization operations leads to unnecessary reporting of numerous races. Our experiments with SPLASH-2 benchmark suite show that 12-131 distinct segments in source code, on an average, give rise to well over 4 million dynamic instances of falsely reported races for these programs. We propose a dynamic software technique that identifies the user defined synchronizations exercised during a program run. This information not only helps avoids reporting of unnecessary races, but also helps a record/replay system to speedup the replay. Chen Tian 0002, Vijay Nagarajan, Rajiv Gupta 0001, Sriraman Tallam |
ISSTA | 1 |
| 2008 | Copy or Discard execution model for speculative parallelization on multicoresabstractThe advent of multicores presents a promising opportunity for speeding up sequential programs via profile-based speculative parallelization of these programs. In this paper we present a novel solution for efficiently supporting software speculation on multicore processors. We propose the Copy or Discard (CorD) execution model in which the state of speculative parallel threads is maintained separately from the nonspeculative computation state. If speculation is successful, the results of the speculative computation are committed by copying them into the non-speculative state. If misspeculation is detected, no costly state recovery mechanisms are needed as the speculative state can be simply discarded. Optimizations are proposed to reduce the cost of data copying between nonspeculative and speculative state. A lightweight mechanism that maintains version numbers for non-speculative data values enables misspeculation detection. We also present an algorithm for profile-based speculative parallelization that is effective in extracting parallelism from sequential programs. Our experiments show that the combination of CorD and our speculative parallelization algorithm achieves speedups ranging from 3.7 to 7.8 on a Dell PowerEdge 1900 server with two Intel Xeon quad-core processors. Chen Tian 0002, Min Feng 0001, Vijay Nagarajan, Rajiv Gupta 0001 |
MICRO | 1 |
| 2007 | Enabling tracing Of long-running multithreaded programs via dynamic execution reductionabstractDebugging long running multithreaded programs is a very challenging problem when using tracing-based analyses. Since such programs are non-deterministic, reproducing the bug is non-trivial and generating and inspecting traces for long running programs can be prohibitively expensive. We propose a framework in which, to overcome the problem of bug reproducibility, a lightweight logging technique is used to log the events during the original execution. When a bug is encountered, it is reproduced using the generated log and during the replay, a fine-grained tracing technique is employed to collect control-flow/dependence traces that are then used to locate the root cause of the bug. In this paper, we address the key challenges resulting due to tracing, that is, the prohibitively high expense of collecting traces and the significant burden on the user who must examine the large amount of trace information to locate the bug in a long-running multithreaded program. These challenges are addressed through execution reduction that realizes a combination of logging and tracing such that traces collected contain only the execution information from those regions of threads that are relevant to the fault. This approach is highly effective because we observe that for long running multithreaded programs, many threads that execute are irrelevant to the fault. Hence, these threads need not be replayed and traced when trying to reproduce the bug. We develop a novel lightweight scheme that identifies such threads by observing all the interthread data dependences and removes their execution footprint in the replay run. In addition, we identify regions of thread executions that need not be replayed or, if they must be replayed, we determine if they need not be traced. Following execution reduction, the replayed execution takes lesser time to run and it produces a much smaller trace than the original execution. Thus, the cost of collecting traces and the effort of examining the traces to locate the fault are greatly reduced. Sriraman Tallam, Chen Tian 0002, Rajiv Gupta 0001, Xiangyu Zhang 0001 |
ISSTA | 2 |