Skip to Main Content
Concurrent programs that contain busy-waiting loops or iterative statements might not stop when they are tested dynamically due to some processes getting stuck in infinite loops or the execution of several loops forming a livelock. The traditional way of handling this problem in dynamic testing - interrupting the execution of the concurrent program when a predefined maximum execution time is exceeded. In this paper, we propose a dynamic decision scheme that spontaneously stops the execution of tested processes when they get stuck in an infinite loop or form a livelock. Since the halting problem is proven to be undecidable, we propose heuristic algorithms to cope with this. We apply the proposed scheme to a dynamic testing methodology called dynamic effective testing, which can perform state- and transition-cover testing for concurrent programs with busy-waiting loops. The implementation and experimental results demonstrate the feasibility of the proposed scheme.