METHODS AND SYSTEMS TO IDENTIFY AND REPRODUCE CONCURRENCY VIOLATIONS IN MULTI-THREADED PROGRAMS USING EXPRESSIONS
First Claim
1. A method to identify threads responsible for causing a concurrency bug in a computer program having a plurality of concurrently executing threads, the method comprising:
- defining, with a processor, a data type including;
a first predicate, the first predicate being invoked using a first program instruction inserted in a first thread of the plurality of threads;
a second predicate, the second predicate being invoked using a second program instruction inserted in a second thread of the plurality of threads; and
an expression defining a relationship between the first predicate and the second predicate;
in response to determining the relationship is satisfied during execution of the computer program, identifying the first thread and the second thread as responsible for the concurrency bug.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and systems to identify threads responsible for causing a concurrency bug in a computer program having a plurality of concurrently executing threads are disclosed. An example method disclosed herein includes defining, with a processor, a data type. The data type including a first predicate, the first predicate being invoked using a first program instruction inserted in a first thread of the plurality of threads, a second predicate, the second predicate being invoked using a second program instruction inserted in a second thread of the plurality of threads, and an expression defining a relationship between the first predicate and the second predicate. The method further includes, in response to determining the relationship is satisfied during execution of the computer program, identifying the first thread and the second thread as responsible for the concurrency bug.
-
Citations
18 Claims
-
1. A method to identify threads responsible for causing a concurrency bug in a computer program having a plurality of concurrently executing threads, the method comprising:
-
defining, with a processor, a data type including; a first predicate, the first predicate being invoked using a first program instruction inserted in a first thread of the plurality of threads; a second predicate, the second predicate being invoked using a second program instruction inserted in a second thread of the plurality of threads; and an expression defining a relationship between the first predicate and the second predicate; in response to determining the relationship is satisfied during execution of the computer program, identifying the first thread and the second thread as responsible for the concurrency bug. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus to identify threads responsible for causing a concurrency bug in a computer program having a plurality of concurrently executing threads, the apparatus comprising:
-
a memory to store machine readable instructions and a data type definition, the data type definition specifying; a first program instruction invoking a first predicate, the first program instruction to be inserted into a first thread of the plurality of threads; a second program instruction invoking a second predicate, the second program instruction to be inserted into a second thread of the plurality of threads; an expression defining a relationship between the first predicate and the second predicate; and a processor to execute the machine readable instructions to respond to an occurrence of the relationship being satisfied during execution of the computer program, by identifying the first thread and the second thread as responsible for the concurrency bug. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A machine readable storage medium comprising instructions which, when executed, cause a machine to at least:
-
monitor execution of a computer program having a plurality of concurrently executing threads; and identify a first thread and a second thread of the plurality of threads as causing a concurrency bug, when a relationship specified in a data type is satisfied during execution of the computer program, the data type specifying; a first predicate, the first predicate being invoked using a first program instruction in the first thread of the computer program; a second predicate, the second predicate being invoked using a second program instruction in the second thread of the plurality of threads; and an expression defining the relationship between the first predicate and the second predicate. - View Dependent Claims (15, 16, 17, 18)
-
Specification