An Efficient Binary Technique for Trace Simplifications of Concurrent Programs
This work addresses the challenge of reasoning about concurrent programs for developers and researchers, but it appears incremental as it builds on prior trace simplification techniques.
The paper tackles the problem of analyzing concurrent programs by introducing a static approach for trace simplification that reduces context switches, and experimental results demonstrate its efficiency and effectiveness.
Execution of concurrent programs implies frequent switching between different thread contexts. This property perplexes analyzing and reasoning about concurrent programs. Trace simplification is a technique that aims at alleviating this problem via transforming a concurrent program trace (execution) into a semantically equivalent one. The resulted trace typically includes less number of context switches than that in the original trace. This paper presents a new static approach for trace simplification. This approach is based on a connectivity analysis that calculates for each trace-point connectivity and context-switching information. The paper also presents a novel operational semantics for concurrent programs. The semantics is used to prove the correctness and efficiency of the proposed techniques for connectivity analysis and trace simplification. The results of experiments testing the proposed technique on problems treated by previous work for trace simplification are also shown in the paper. The results prove the efficiency and effectiveness of the proposed method.