In theory, it should be possible to at least brute force a verification of a lock-free algorithm (there are only so many combinations of function calls intersecting). Are there
Data race detection is an NP hard problem [Netzer&Miller 1990]
I heard about the tools Lockset, and DJit+ (they teach it in the CDP course).
Try reading the slides, and googling what they reference to. It contains some interesting information.