Runtime Verification And Debugging Of Concurrent Software