EDBT 2026 Demo / reviewers in the wild / expert
Dasarath Weeratunge
dblp:31/7934
· DBLP profile ↗
5ranked-venue papers
3as first author
0since 2021 · last 2012
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 3 first-authorSystems, architecture and hardware · 1 · 1 first-author
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.
| Software engineering, system software, and programming languages
5 papers |
Program analysis · 50% Concurrent programming · 32% Debugging and program repair · 15% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Parallel and multicore computing · 100% |
Topics — the 10 heaviest of 11, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
dynamic analysis |
0.4 | 3 | 2012 | Precise Calling Context Encoding · IEEE Trans. Software Eng. 2012 Accentuating the positive: atomicity inference and enforcement using correct executions · OOPSLA 2011 Precise calling context encoding · ICSE (1) 2010 |
Concurrent programming
concurrency bugs |
0.3 | 3 | 2011 | Accentuating the positive: atomicity inference and enforcement using correct executions · OOPSLA 2011 Analyzing concurrency bugs using dual slicing · ISSTA 2010 Analyzing multicore dumps to facilitate concurrency bug reproduction · ASPLOS 2010 |
Program analysis
calling context encoding |
0.3 | 2 | 2012 | Precise Calling Context Encoding · IEEE Trans. Software Eng. 2012 Precise calling context encoding · ICSE (1) 2010 |
Program analysis › dynamic analysis
profiling |
0.2 | 2 | 2011 | Accentuating the positive: atomicity inference and enforcement using correct executions · OOPSLA 2011 Precise calling context encoding · ICSE (1) 2010 |
Debugging and program repair
bug reproduction |
0.1 | 1 | 2010 | Analyzing multicore dumps to facilitate concurrency bug reproduction · ASPLOS 2010 |
Concurrent programming › concurrency bugs
concurrency bug reproduction |
0.1 | 1 | 2010 | Analyzing multicore dumps to facilitate concurrency bug reproduction · ASPLOS 2010 |
Concurrent programming › concurrency bugs
data races |
0.1 | 1 | 2010 | Analyzing concurrency bugs using dual slicing · ISSTA 2010 |
Debugging and program repair
fault localization |
0.1 | 1 | 2010 | Analyzing concurrency bugs using dual slicing · ISSTA 2010 |
Software testing › test execution
test suite execution |
0.0 | 1 | 2011 | Accentuating the positive: atomicity inference and enforcement using correct executions · OOPSLA 2011 |
Parallel and multicore computing › parallel computing › parallel program debugging
multicore debugging |
0.0 | 1 | 2010 | Analyzing multicore dumps to facilitate concurrency bug reproduction · ASPLOS 2010 |
Methods — techniques the papers use, named apart from their topics
integer encoding · 0.3lightweight execution analysis · 0.2deterministic replay · 0.2stack depth analysis · 0.1deadlock-free locking injection · 0.1stack depth identification · 0.1dynamic analysis · 0.1dual slicing · 0.1calling context encoding · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | Precise Calling Context EncodingabstractCalling contexts (CCs) are very important for a wide range of applications such as profiling, debugging, and event logging. Most applications perform expensive stack walking to recover contexts. The resulting contexts are often explicitly represented as a sequence of call sites and hence are bulky. We propose a technique to encode the current calling context of any point during an execution. In particular, an acyclic call path is encoded into one number through only integer additions. Recursive call paths are divided into acyclic subsequences and encoded independently. We leverage stack depth in a safe way to optimize encoding: If a calling context can be safely and uniquely identified by its stack depth, we do not perform encoding. We propose an algorithm to seamlessly fuse encoding and stack depth-based identification. The algorithm is safe because different contexts are guaranteed to have different IDs. It also ensures contexts can be faithfully decoded. Our experiments show that our technique incurs negligible overhead (0-6.4 percent). For most medium-sized programs, it can encode all contexts with just one number. For large programs, we are able to encode most calling contexts to a few numbers. We also present our experience of applying context encoding to debugging crash-based failures. William N. Sumner, Yunhui Zheng, Dasarath Weeratunge, Xiangyu Zhang 0001 |
IEEE Trans. Software Eng. | 3 |
| 2011 | Accentuating the positive: atomicity inference and enforcement using correct executionsabstractConcurrency bugs are often due to inadequate synchronization that fail to prevent specific (undesirable) thread interleavings. Such errors, often referred to as Heisenbugs, are difficult to detect, prevent, and repair. In this paper, we present a new technique to increase program robustness against Heisenbugs. We profile correct executions from provided test suites to infer fine-grained atomicity properties. Additional deadlock-free locking is injected into the program to guarantee these properties hold on production runs. Notably, our technique does not rely on witnessing or analyzing erroneous executions. The end result is a scheme that only permits executions which are guaranteed to preserve the atomicity properties derived from the profile. Evaluation results on large, real-world, open-source programs show that our technique can effectively suppress subtle concurrency bugs, with small runtime overheads (typically less than 15%). Dasarath Weeratunge, Xiangyu Zhang 0001, Suresh Jagannathan |
OOPSLA | 1 |
| 2010 | Analyzing multicore dumps to facilitate concurrency bug reproductionabstractDebugging concurrent programs is difficult. This is primarily because the inherent non-determinism that arises because of scheduler interleavings makes it hard to easily reproduce bugs that may manifest only under certain interleavings. The problem is exacerbated in multi-core environments where there are multiple schedulers, one for each core. In this paper, we propose a reproduction technique for concurrent programs that execute on multi-core platforms. Our technique performs a lightweight analysis of a failing execution that occurs in a multi-core environment, and uses the result of the analysis to enable reproduction of the bug in a single-core system, under the control of a deterministic scheduler. Dasarath Weeratunge, Xiangyu Zhang 0001, Suresh Jagannathan |
ASPLOS | 1 |
| 2010 | Precise calling context encodingabstractCalling contexts are very important for a wide range of applications such as profiling, debugging, and event logging. Most applications perform expensive stack walking to recover contexts. The resulting contexts are often explicitly represented as a sequence of call sites and hence bulky. We propose a technique to encode the current calling context of any point during an execution. In particular, an acyclic call path is encoded into one number through only integer additions. Recursive call paths are divided into acyclic subsequences and encoded independently. We leverage stack depth in a safe way to optimize encoding: if a calling context can be safely and uniquely identified by its stack depth, we do not perform encoding. We propose an algorithm to seamlessly fuse encoding and stack depth based identification. The algorithm is safe because different contexts are guaranteed to have different IDs. It also ensures contexts can be faithfully decoded. Our experiments show that our technique incurs negligible overhead (1.89% on average). For most medium-sized programs, it can encode all contexts with just one number. For large programs, we are able to encode most calling contexts to a few numbers. William N. Sumner, Yunhui Zheng, Dasarath Weeratunge, Xiangyu Zhang 0001 |
ICSE (1) | 3 |
| 2010 | Analyzing concurrency bugs using dual slicingabstractRecently, there has been much interest in developing analyzes to detect concurrency bugs that arise because of data races, atomicity violations, execution omission, etc. However, determining whether reported bugs are in fact real, and understanding how these bugs lead to incorrect behavior, remains a labor-intensive process. This paper proposes a novel dynamic analysis that automatically produces the causal path of a concurrent failure leading from the root cause to the failure. Given two schedules, one inducing the failure and the other not, our technique collects traces of the two executions, and compares them to identify salient differences. The causal relation between the differences is disclosed by leveraging a novel slicing algorithm called dual slicing that slices both executions alternatively and iteratively, producing a slice containing trace differences from both runs. Our experiments show that dual slices tend to be very small, often an order of magnitude or more smaller than the corresponding dynamic slices; more importantly, they enable precise analysis of real concurrency bugs for large programs, with reasonable overhead. Dasarath Weeratunge, Xiangyu Zhang 0001, William N. Sumner, Suresh Jagannathan |
ISSTA | 1 |