Bounded context switching (BCS) is an under-approximate method for finding violations to safety properties in shared memory concurrent programs. Technically, BCS is a reachability problem that is known to be NP-complete if the context bound is part of the input. Our contribution is a parameterized analysis of BCS. The main finding is a new algorithm that solves BCS when parameterized by the number of context switches and the size of the memory. Notably, there are no restrictions on the number, the size, nor the behavior of the threads. Moreover, the algorithm is generic in that it applies to various classes of programs. The runtime is O*(m^cs * 4^cs) where m is the size of the memory. We show an O*(2^cs) lower bound, assuming the exponential time hypothesis. The idea behind the algorithm is to iterate over the memory sequences: sequences of states in the memory that are seen upon context switches. We also study a generalization of the parameterization that only limits the size of the memory each thread may access.
['Peter Chini', 'Jonathan Kolberg', 'Roland Meyer', 'Prakash Saivasan']
On the Complexity of Bounded Context Switching