SYSTEMS AND METHODS FOR FINDING CONCURRENCY ERRORS
First Claim
1. A nontransitory computer-readable medium having computer-executable instructions stored thereon that, if executed by one or more processors of a computing device, cause the computing device to perform actions to analyze a set of context-aware communication graphs for debugging, the actions comprising:
- creating, by the computing device, a set of aggregate reconstructions based on edges of the set of communication graphs;
ranking, by the computing device, the aggregate reconstructions in order of likelihood of being associated with a failed execution; and
presenting, by the computing device, one or more highly ranked aggregate reconstructions.
3 Assignments
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
26 Claims
-
1. A nontransitory computer-readable medium having computer-executable instructions stored thereon that, if executed by one or more processors of a computing device, cause the computing device to perform actions to analyze a set of context-aware communication graphs for debugging, the actions comprising:
-
creating, by the computing device, a set of aggregate reconstructions based on edges of the set of communication graphs; ranking, by the computing device, the aggregate reconstructions in order of likelihood of being associated with a failed execution; and presenting, by the computing device, one or more highly ranked aggregate reconstructions. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. 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 (9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A computing device for detecting concurrency bugs, the device comprising:
-
at least two processing cores; at least two cache memories, wherein each cache memory is associated with at least one processing core, and wherein each cache memory is associated with coherence logic; a coherence interconnect communicatively coupled to each of the cache memories; and a communication graph data store; wherein the coherence logic is configured to add edges to a communication graph stored in the communication graph data store based on coherence messages transmitted on the coherence interconnect. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26)
-
Specification