Symbolic Execution to Detect Semantic Merge Conflicts

Research output: Chapter in Book/Report/Conference proceedingConference paper

48 Downloads (Pure)


Collaborative software development depends on managing multiple versions of a program which requires mechanisms to merge program versions to eventually deploy a single executable. Merging program versions can be challenging as conflicts can arise. The most challenging form is a semantic conflict, which introduces unintended behaviour in the resulting executable while merging.

In this paper, we develop an approach that detects such semantic merge conflicts by symbolic execution. We define the program semantics as path conditions, produced by a symbolic executor, and check whether the conditions satisfy established rules that reflect a merge conflict. Our usage of symbolic execution to check these rules is novel. We evaluate the correctness of our approach through mutation testing, and evaluate it empirically by applying the approach to real-world merges sampled from GitHub. We also discuss what challenges arise in the empirical evaluation, including the problems i) that semantic merge conflicts are rare in the wild, ii) and, even in retrospection, hard to find using standard search mechanisms. Our evaluation shows that in specific cases, our approach using symbolic execution is a promising extension to existing mechanisms to merge conflict detection.
Original languageEnglish
Title of host publication23rd IEEE International Working Conference on Source Code Analysis and Manipulation
Publication statusAccepted/In press - 2023


Dive into the research topics of 'Symbolic Execution to Detect Semantic Merge Conflicts'. Together they form a unique fingerprint.

Cite this