Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Malavika Samak

dblp:141/0429 · DBLP profile ↗
← Back
8ranked-venue papers
7as first author
0since 2021 · last 2020
0000-0003-2719-9884ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 6 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
8 papers
Concurrent programming · 54% Software testing · 26% Program verification · 9%
Databases, data mining, and information retrieval
1 paper
Query processing and optimization · 100%

Topics — the 12 heaviest of 14, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
1.162016
Directed synthesis of failing concurrent executions · OOPSLA 2016
Synthesizing tests for detecting atomicity violations · ESEC/SIGSOFT FSE 2015
Synthesizing racy tests · PLDI 2015
Concurrent programming
deadlock detection
0.842016
Directed synthesis of failing concurrent executions · OOPSLA 2016
Omen+: a precise dynamic deadlock detector for multithreaded Java libraries · SIGSOFT FSE 2014
Trace driven dynamic deadlock detection and reproduction · PPoPP 2014
Software testing
concurrency testing
0.422016
Directed synthesis of failing concurrent executions · OOPSLA 2016
Multithreaded test synthesis for deadlock detection · OOPSLA 2014
Program verification
equivalence checking
0.412020
Synthesizing replacement classes · Proc. ACM Program. Lang. 2020
Query processing and optimization
query optimization
0.312017
Optimizing Big-Data Queries Using Program Synthesis · SOSP 2017
Concurrent programming › concurrency bug detection
atomicity violation detection
0.212015
Synthesizing tests for detecting atomicity violations · ESEC/SIGSOFT FSE 2015
Software testing › concurrency testing
concurrent test generation
0.212015
Synthesizing racy tests · PLDI 2015
Concurrent programming › concurrency bug detection
data race detection
0.212015
Synthesizing racy tests · PLDI 2015
Program analysis
dynamic analysis
0.212015
Synthesizing racy tests · PLDI 2015
Software testing
test generation
0.212015
Synthesizing racy tests · PLDI 2015
Concurrent programming › deadlock detection
dynamic deadlock detection
0.212014
Trace driven dynamic deadlock detection and reproduction · PPoPP 2014
Concurrent programming › concurrency bugs
deadlock
0.112014
Trace driven dynamic deadlock detection and reproduction · PPoPP 2014

Methods — techniques the papers use, named apart from their topics

static analysis · 0.8dynamic analysis · 0.8test synthesis · 0.6template-based synthesis · 0.6program synthesis · 0.6synthesis · 0.4equivalence predicate · 0.4fuzzing · 0.2directed synthesis · 0.2dynamic race detection · 0.2
YearPublicationVenuePosition
2020 Synthesizing replacement classes
abstract
We present a new technique for automatically synthesizing replacement classes. The technique starts with an original class O and a potential replacement class R, then uses R to synthesize a new class that implements the same interface and provides the same functionality as O. Critically, our technique works with a synthe- sized inter-class equivalence predicate between the states of O and R. It uses this predicate to ensure that original and synthesized methods leave corresponding O and R objects in equivalent states. The predicate therefore enables the technique to synthesize individual replacement methods in isolation while still obtain- ing a replacement class that leaves the original and replacement objects in equivalent states after arbitrarily long method invocation sequences. We have implemented the technique as part of a tool, named Mask, and evaluated it using open-source Java classes. The results highlight the effectiveness of Mask in synthesizing replacement classes.
Malavika Samak, Deokhwan Kim, Martin C. Rinard
Proc. ACM Program. Lang.1
2017 Optimizing Big-Data Queries Using Program Synthesis
abstract
Classical query optimization relies on a predefined set of rewrite rules to re-order and substitute SQL operators at a logical level. This paper proposes Blitz, a system that can synthesize efficient query-specific operators using automated program reasoning. Blitz uses static analysis to identify sub-queries as potential targets for optimization. For each sub-query, it constructs a template that defines a large space of possible operator implementations, all restricted to have linear time and space complexity. Blitz then employs program synthesis to instantiate the template and obtain a data-parallel operator implementation that is functionally equivalent to the original sub-query up to a bound on the input size.
Matthias Schlaipfer, Kaushik Rajan, Akash Lal, Malavika Samak
SOSP4
2016 Directed synthesis of failing concurrent executions
abstract
Detecting concurrency-induced bugs in multithreaded libraries can be challenging due to the intricacies associated with their manifestation. This includes invocation of multiple methods, synthesis of inputs to the methods to reach the failing location, and crafting of thread interleavings that cause the erroneous behavior. Neither fuzzing-based testing techniques nor over-approximate static analyses are well positioned to detect such subtle defects while retaining high accuracy alongside satisfactory coverage.
Malavika Samak, Omer Tripp, Murali Krishna Ramanathan
OOPSLA1
2015 Synthesizing racy tests
abstract
Subtle concurrency errors in multithreaded libraries that arise because of incorrect or inadequate synchronization are often difficult to pinpoint precisely using only static techniques. On the other hand, the effectiveness of dynamic race detectors is critically dependent on multithreaded test suites whose execution can be used to identify and trigger races. Usually, such multithreaded tests need to invoke a specific combination of methods with objects involved in the invocations being shared appropriately to expose a race. Without a priori knowledge of the race, construction of such tests can be challenging. In this paper, we present a lightweight and scalable technique for synthesizing precisely these kinds of tests. Given a multithreaded library and a sequential test suite, we describe a fully automated analysis that examines sequential execution traces, and produces as its output a concurrent client program that drives shared objects via library method calls to states conducive for triggering a race. Experimental results on a variety of well-tested Java libraries yield 101 synthesized multithreaded tests in less than four minutes. Analyzing the execution of these tests using an off-the-shelf race detector reveals 187 harmful races, including several previously unreported ones. Our implementation, named NARADA, and the results of our experiments are available at http://www.csa.iisc.ernet.in/~sss/tools/narada.
Malavika Samak, Murali Krishna Ramanathan, Suresh Jagannathan
PLDI1
2015 Synthesizing tests for detecting atomicity violations
abstract
Using thread-safe libraries can help programmers avoid the complexities of multithreading. However, designing libraries that guarantee thread-safety can be challenging. Detecting and eliminating atomicity violations when methods in the libraries are invoked concurrently is vital in building reliable client applications that use the libraries. While there are dynamic analyses to detect atomicity violations, these techniques are critically dependent on effective multithreaded tests. Unfortunately, designing such tests is non-trivial. In this paper, we design a novel and scalable approach for synthesizing multithreaded tests that help detect atomicity violations. The input to the approach is the implementation of the library and a sequential seed testsuite that invokes every method in the library with random parameters. We analyze the execution of the sequential tests, generate variable lock dependencies and construct a set of three accesses which when interleaved suitably in a multithreaded execution can cause an atomicity violation. Subsequently, we identify pairs of method invocations that correspond to these accesses and invoke them concurrently from distinct threads with appropriate objects to help expose atomicity violations. We have incorporated these ideas in our tool, named Intruder, and applied it on multiple open-source Java multithreaded libraries. Intruder is able to synthesize 40 multithreaded tests across nine classes in less than two minutes to detect 79 harmful atomicity violations, including previously unknown violations in thread-safe classes. We also demonstrate the effectiveness of Intruder by comparing the results with other approaches designed for synthesizing multithreaded tests.
Malavika Samak, Murali Krishna Ramanathan
ESEC/SIGSOFT FSE1
2014 Multithreaded test synthesis for deadlock detection
abstract
Designing and implementing thread-safe multithreaded libraries can be a daunting task as developers of these libraries need to ensure that their implementations are free from concurrency bugs, including deadlocks. The usual practice involves employing software testing and/or dynamic analysis to detect deadlocks. Their effectiveness is dependent on well-designed multithreaded test cases. Unsurprisingly, developing multithreaded tests is significantly harder than developing sequential tests for obvious reasons.
Malavika Samak, Murali Krishna Ramanathan
OOPSLA1
2014 Trace driven dynamic deadlock detection and reproduction
abstract
Dynamic analysis techniques have been proposed to detect potential deadlocks. Analyzing and comprehending each potential deadlock to determine whether the deadlock is feasible in a real execution requires significant programmer effort. Moreover, empirical evidence shows that existing analyses are quite imprecise. This imprecision of the analyses further void the manual effort invested in reasoning about non-existent defects.
Malavika Samak, Murali Krishna Ramanathan
PPoPP1
2014 Omen+: a precise dynamic deadlock detector for multithreaded Java libraries
abstract
Designing thread-safe libraries without concurrency defects can be a challenging task. Detecting deadlocks while invoking methods in these libraries concurrently is hard due to the possible number of method invocation combinations, the object assignments to the parameters and the associated thread interleavings. In this paper, we describe the design and implementation of OMEN+ that takes a multithreaded library as the input and detects true deadlocks in a scalable manner. We achieve this by automatically synthesizing relevant multithreaded tests and analyze the associated execution traces using a precise deadlock detector. We validate the usefulness of OMEN+ by applying it on many multithreaded Java libraries and detect a number of deadlocks even in documented thread-safe libraries. The tool is available for free download at http://www.csa.iisc.ernet.in/~sss/tool/omenplus.html.
Malavika Samak, Murali Krishna Ramanathan
SIGSOFT FSE1