Parsimonious Optimal Dynamic Partial Order Reduction

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Abdulla, Parosh Aziz, Atig, Mohamed Faouzi, Das, Sarbojit, Jonsson, Bengt, Sagonas, Konstantinos
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866912040759590912
author Abdulla, Parosh Aziz
Atig, Mohamed Faouzi
Das, Sarbojit
Jonsson, Bengt
Sagonas, Konstantinos
author_facet Abdulla, Parosh Aziz
Atig, Mohamed Faouzi
Das, Sarbojit
Jonsson, Bengt
Sagonas, Konstantinos
contents Stateless model checking is a fully automatic verification technique for concurrent programs that checks for safety violations by exploring all possible thread schedulings. It becomes effective when coupled with Dynamic Partial Order Reduction (DPOR), which introduces an equivalence on schedulings and reduces the amount of needed exploration. DPOR algorithms that are optimal are particularly effective in that they guarantee to explore exactly one execution from each equivalence class. Unfortunately, existing sequence-based optimal algorithms may in the worst case consume memory that is exponential in the size of the analyzed program. In this paper, we present Parsimonious-OPtimal DPOR (POP), an optimal DPOR algorithm for analyzing multi-threaded programs under sequential consistency, whose space consumption is polynomial in the worst case. POP combines several novel algorithmic techniques, including (i) a parsimonious race reversal strategy, which avoids multiple reversals of the same race, (ii) an eager race reversal strategy to avoid storing initial fragments of to-be-explored executions, and (iii) a space-efficient scheme for preventing redundant exploration, which replaces the use of sleep sets. Our implementation in Nidhugg shows that these techniques can significantly speed up the analysis of concurrent programs, and do so with low memory consumption. Comparison to TruSt, a related optimal DPOR algorithm that represents executions as graphs, shows that POP's implementation achieves similar performance for smaller benchmarks, and scales much better than TruSt's on programs with long executions.
format Preprint
id arxiv_https___arxiv_org_abs_2405_11128
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Parsimonious Optimal Dynamic Partial Order Reduction
Abdulla, Parosh Aziz
Atig, Mohamed Faouzi
Das, Sarbojit
Jonsson, Bengt
Sagonas, Konstantinos
Programming Languages
Software Engineering
Stateless model checking is a fully automatic verification technique for concurrent programs that checks for safety violations by exploring all possible thread schedulings. It becomes effective when coupled with Dynamic Partial Order Reduction (DPOR), which introduces an equivalence on schedulings and reduces the amount of needed exploration. DPOR algorithms that are optimal are particularly effective in that they guarantee to explore exactly one execution from each equivalence class. Unfortunately, existing sequence-based optimal algorithms may in the worst case consume memory that is exponential in the size of the analyzed program. In this paper, we present Parsimonious-OPtimal DPOR (POP), an optimal DPOR algorithm for analyzing multi-threaded programs under sequential consistency, whose space consumption is polynomial in the worst case. POP combines several novel algorithmic techniques, including (i) a parsimonious race reversal strategy, which avoids multiple reversals of the same race, (ii) an eager race reversal strategy to avoid storing initial fragments of to-be-explored executions, and (iii) a space-efficient scheme for preventing redundant exploration, which replaces the use of sleep sets. Our implementation in Nidhugg shows that these techniques can significantly speed up the analysis of concurrent programs, and do so with low memory consumption. Comparison to TruSt, a related optimal DPOR algorithm that represents executions as graphs, shows that POP's implementation achieves similar performance for smaller benchmarks, and scales much better than TruSt's on programs with long executions.
title Parsimonious Optimal Dynamic Partial Order Reduction
topic Programming Languages
Software Engineering
url https://arxiv.org/abs/2405.11128