ISSTA2024

Testing Concurrent Algorithms on JVM with Lincheck and IntelliJ IDEA

Aleksandr Potapov, Maksim Zuev, Evgenii Moiseenko, Nikita Koval

1 citation

Abstract

This paper presents an Intellij IDEA plugin for Lincheck-a popular framework for testing concurrent data structures on JVM. The Lincheck framework automatically generates concurrent scenarios and examines them with a model checker, providing a detailed execution trace that reproduces the detected error. This trace includes all shared memory access and synchronization events. The Intellij IDEA plugin offers record-and-replay debugging to study the execution trace, providing native debugging experience in the IDE. The Lincheck plugin pauses the failed execution at the beginning and provides additional panels that visualize the failed scenario, the execution trace, and the current state of the data structure. One can step through the trace and reproduce the error, moving forward and backward and observing how the data structure changes. These novel capabilities significantly improve the debugging process, making identifying and fixing complex concurrency bugs easier. CCS Concepts • Software and its engineering → Model checking; Software testing and debugging.