Dynamically detecting data races in multi-threaded object-oriented programs by tracing function entries and exits | IEEE Conference Publication | IEEE Xplore