1. Computer readable memory having stored thereon computer executable instructions executable by a computer to perform a process comprising: locating multiple threads during execution of a multi-threaded program; identifying one or more thread-specific cold paths, one or more thread-specific lockset paths and one or more thread-specific hot paths from the multiple located threads, wherein: the one or more thread-specific cold paths indicate that one or more first threads are accessed or executed less than a first predetermined number of times, the one or more thread-specific hot paths indicate that one or more second threads are accessed or executed more than a second predetermined number of time, and the one or more thread-specific lockset paths indicate that one or more third threads are accessed using different locks; sampling: (i) the one or more thread-specific cold paths at a first rate; (ii) the one or more thread-specific lockset paths at a second rate, and (iii) the one or more thread specific hot paths at a third rate that is less than both the first and second rates; and generating a data-race log that includes information determined during the sampling of the one or more thread-specific cold paths, the one or more thread-specific lockset paths, and the one or more thread-specific hot paths.