1. A method for detecting one or more data races in a concurrent program, the method comprising: generating locksets for an execution of the program; and analyzing the generated locksets for the execution to determine a set of data race variables in the program, wherein, for each variable in the set of data race variables, the execution of the program involves a data race on the variable.