Dynamically detecting data races in multi-threaded object-oriented programs by tracing function entries and exits
Data race is one of the most common programming errors in multi-threaded programs and there exist many static, dynamic or hybrid approaches targeted at detecting them. Unlike most previous works, this paper proposes a new data race detection algorithm for multi-threaded object-oriented programs, which leverages the fact that large complicated multi-threaded programs usually provide comprehensive logging mechanisms for debugging and other purposes. The proposed algorithm relies only on the logging information of function entries/exits and synchronization operations. The major advantage of the proposed algorithm is that the race detection function is naturally integrated into the application programs and has a much lower overhead compared with most existing data race tools.