Fray: An Efficient General-Purpose Concurrency Testing Platform for the JVM (Extended Version)

Fuente: arXiv
Salvato in:
Dettagli Bibliografici
Autori principali: Li, Ao, Kang, Byeongjee, Vikram, Vasudev, Laybourn, Isabella, Dharanikota, Samvid, Tiwari, Shrey, Padhye, Rohan
Natura: Preprint
Pubblicazione: 2025
Soggetti:
Accesso online:
Tags: Aggiungi Tag
Nessun Tag, puoi essere il primo ad aggiungerne!!
_version_ 1866908504881627136
author Li, Ao
Kang, Byeongjee
Vikram, Vasudev
Laybourn, Isabella
Dharanikota, Samvid
Tiwari, Shrey
Padhye, Rohan
author_facet Li, Ao
Kang, Byeongjee
Vikram, Vasudev
Laybourn, Isabella
Dharanikota, Samvid
Tiwari, Shrey
Padhye, Rohan
contents Concurrency bugs are hard to discover and reproduce. Prior work has developed sophisticated algorithms to search for concurrency bugs, such as partial order sampling (POS); however, fundamental limitations with existing platforms for concurrency control hinder effective testing of real-world software. We observe that the design space for concurrency control on managed code involves complex trade-offs between expressibility, applicability, and maintainability on the one hand, and bug-finding efficiency on the other hand. This paper presents Fray, a platform for performing push-button concurrency testing of data-race-free JVM programs. The key insight behind Fray is that effective controlled concurrency testing requires orchestrating thread interleavings without replacing existing concurrency primitives, while encoding their semantics for faithfully expressing the set of all possible program behaviors. Fray incorporates a novel concurrency control mechanism called shadow locking, designed to make controlled concurrency testing practical and efficient for JVM programs. In an empirical evaluation on 53 benchmark programs with known bugs (SCTBench and JaConTeBe), Fray with random search finds 70% more bugs than JPF and 77% more bugs than RR's chaos mode. We also demonstrate Fray's push-button applicability on 2,655 tests from Apache Kafka, Lucene, and Google Guava. In these mature projects, Fray successfully discovered 18 real-world concurrency bugs that can cause 363 tests to fail reproducibly.
format Preprint
id arxiv_https___arxiv_org_abs_2501_12618
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Fray: An Efficient General-Purpose Concurrency Testing Platform for the JVM (Extended Version)
Li, Ao
Kang, Byeongjee
Vikram, Vasudev
Laybourn, Isabella
Dharanikota, Samvid
Tiwari, Shrey
Padhye, Rohan
Programming Languages
Distributed, Parallel, and Cluster Computing
Software Engineering
Concurrency bugs are hard to discover and reproduce. Prior work has developed sophisticated algorithms to search for concurrency bugs, such as partial order sampling (POS); however, fundamental limitations with existing platforms for concurrency control hinder effective testing of real-world software. We observe that the design space for concurrency control on managed code involves complex trade-offs between expressibility, applicability, and maintainability on the one hand, and bug-finding efficiency on the other hand. This paper presents Fray, a platform for performing push-button concurrency testing of data-race-free JVM programs. The key insight behind Fray is that effective controlled concurrency testing requires orchestrating thread interleavings without replacing existing concurrency primitives, while encoding their semantics for faithfully expressing the set of all possible program behaviors. Fray incorporates a novel concurrency control mechanism called shadow locking, designed to make controlled concurrency testing practical and efficient for JVM programs. In an empirical evaluation on 53 benchmark programs with known bugs (SCTBench and JaConTeBe), Fray with random search finds 70% more bugs than JPF and 77% more bugs than RR's chaos mode. We also demonstrate Fray's push-button applicability on 2,655 tests from Apache Kafka, Lucene, and Google Guava. In these mature projects, Fray successfully discovered 18 real-world concurrency bugs that can cause 363 tests to fail reproducibly.
title Fray: An Efficient General-Purpose Concurrency Testing Platform for the JVM (Extended Version)
topic Programming Languages
Distributed, Parallel, and Cluster Computing
Software Engineering
url https://arxiv.org/abs/2501.12618