Combinatorial Constructions in Testing Concurrent Programs - Rupak Majumdar

Опубликовано: 09 Март 2026
на канале: ETH WSCR
506
4

Workshop on Software Correctness and Reliability 2017

We consider the following basic task in the testing of concurrent systems. The input to the task is a partial order of events, which models actions performed on or by the system and specifies ordering constraints between them. The task is to determine if some scheduling of these events can result in a bug. The number of schedules to be explored can, in general, be exponential.

Empirically, many bugs in concurrent programs have been observed to have small bug depth; that is, these bugs are exposed by every schedule that orders some d specific events in a particular way, irrespective of how the other events are ordered, and d is small compared to the total number of events.

To find all bugs of depth d, one needs to only test a d-hitting family of schedules: we call a set of schedules a d-hitting family if for each set of d events, and for each allowed ordering of these events, there is some schedule in the family that executes these events in this ordering. The size of a d-hitting family may be much smaller than the number of all possible schedules.

While in general, finding the size of optimal d-hitting families is hard, even for d=2, we show that when the partial order is a tree, one can explicitly construct d-hitting families of schedules of small size. We conclude by describing a number of related tasks and combinatorial constructions that provide rigorous guarantees on the size of test sets for concurrent programs.

(Joint work with Dmitry Chistikov and Filip Niksic)