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 race conditions. 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 such 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 81 synthesized multithreaded tests in less than four minutes. Analyzing the execution of these tests using an off-the-shelf race detector reveals 153 harmful races, including several previously unreported ones.
Mon 15 JunDisplayed time zone: Tijuana, Baja California change
16:00 - 17:40
|Asynchronous Programming, Analysis and Testing with State Machines|
Pantazis Deligiannis Imperial College London, Alastair F. Donaldson Imperial College London, Jeroen Ketema , Akash Lal Microsoft Research India, Paul Thomson Imperial College LondonMedia Attached
|Stateless Model Checking Concurrent Programs with Maximal Causality Reduction|
Jeff Huang Texas A&M UniversityMedia Attached
|Synthesizing racy tests|
Malavika Samak Indian Institute of Science, Bangalore, Murali Krishna Ramanathan Indian Institute of Science, Bangalore, Suresh Jagannathan Purdue UniversityMedia Attached
|The Push/Pull model of transactions|
Research PapersMedia Attached