A race condition detection system and method statically detects potential
race conditions in a multi-threaded computer program. The race condition
detector builds a synchronization graph representing at least a subset of
a computer program's method declarations, field declarations, and
synchronization statements. Edges are constructed between the nodes
representing execution paths in the computer program. Each node is
associated with a set of lock designations that correspond to all locks
that are consistently held along all executions paths in the computer
program to the respective node. The race condition detector analyzes this
information to determine whether accesses to object data fields are
consistently protected by an appropriate lock. An object data field access
that is not protected by an appropriate lock indicates a potential race
condition. At least a subset of indicated potential race conditions are
reported.
Un système et une méthode de détection d'état de course détecte statiquement des conditions potentielles de course dans un programme machine multi-fileté. Le détecteur d'état de course établit un graphique de synchronisation représentant au moins un sous-ensemble de déclarations de la méthode d'un programme machine, de déclarations de champ, et de rapports de synchronisation. Des bords sont construits entre les noeuds représentant des chemins d'exécution dans le programme machine. Chaque noeud est associé à un ensemble de désignations de serrure qui correspondent à toutes les serrures qui sont uniformément tenues le long de tous les chemins d'exécutions dans le programme machine au noeud respectif. Le détecteur d'état de course analyse cette information pour déterminer si des accès aux zones d'information d'objet sont uniformément protégés par une serrure appropriée. Un accès de zone d'information d'objet qui n'est pas protégé par une serrure appropriée indique un état potentiel de course. Au moins un sous-ensemble d'états potentiels indiqués de course sont rapportés.