SYSTEMS AND METHODS FOR FINDING CONCURRENCY ERRORS
First Claim
1. A computer-implemented method of building a context-aware communication graph, the method comprising:
- detecting an access of a memory location by a first instruction of a first thread;
updating a context associated with the first thread; and
in response to determining that a second instruction of a second thread different from the first thread was a last thread to write to the memory location;
adding an edge to the context-aware communication graph, the edge including the context associated with the first thread, a sink identifying the first instruction, a source identifying the second instruction, and a context associated with the second thread.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods for detecting concurrency bugs are provided. In some embodiments, context-aware communication graphs that represent inter-thread communication are collected during test runs, and may be labeled according to whether the test run was correct or failed. Graph edges that are likely to be associated with failed behavior are determined, and probable reconstructions of failed behavior are constructed to assist in debugging. In some embodiments, software instrumentation is used to collect the communication graphs. In some embodiments, hardware configured to collect the communication graphs is provided.
-
Citations
19 Claims
-
1. A computer-implemented method of building a context-aware communication graph, the method comprising:
-
detecting an access of a memory location by a first instruction of a first thread; updating a context associated with the first thread; and in response to determining that a second instruction of a second thread different from the first thread was a last thread to write to the memory location; adding an edge to the context-aware communication graph, the edge including the context associated with the first thread, a sink identifying the first instruction, a source identifying the second instruction, and a context associated with the second thread. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computing device configured to build a context-aware communication graph by:
-
detecting an access of a memory location by a first instruction of a first thread; updating a context associated with the first thread; and in response to determining that a second instruction of a second thread different from the first thread was a last thread to write to the memory location; adding an edge to the context-aware communication graph, the edge including the context associated with the first thread, a sink identifying the first instruction, a source identifying the second instruction, and a context associated with the second thread. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A nontransitory computer readable medium having computer-executable instructions stored thereon that, in response to execution by one or more processors of a computing device, cause the computing device to perform actions for building a context-aware communication graph, the method comprising:
-
detecting an access of a memory location by a first instruction of a first thread; updating a context associated with the first thread; and in response to determining that a second instruction of a second thread different from the first thread was a last thread to write to the memory location; adding an edge to the context-aware communication graph, the edge including the context associated with the first thread, a sink identifying the first instruction, a source identifying the second instruction, and a context associated with the second thread.
-
Specification