Constructing petri nets from traces for diagnostics
First Claim
1. A computer-readable storage medium having computer-executable instructions for causing a computer to perform steps comprising:
- obtain at least one initial trace from a concurrent program that executed properly;
use the at least one initial trace to create a Petri Net;
using the at least one trace to generate unique label or task identifiers for a Petri Net;
obtain a later trace from a later execution of the concurrent program that did not execute properly; and
run the later trace against the Petri Net to identify at least one difference by comparing the Petri Net to the later trace corresponding to a subsequent execution of the concurrent program where the concurrent program executed improperly, wherein the comparing includes determining whether a transition in the Petri Net has at least one of the corresponding label or task identifier in the later trace.
2 Assignments
0 Petitions
Accused Products
Abstract
Various technologies and techniques are disclosed for using Petri Nets for diagnostics of concurrent programs. One or more initial traces are obtained from a concurrent program that executed properly. The initial trace is used to create a Petri Net. To generate the Petri Net, unique task identifiers and places of interest are generated, and transitions are added. The resulting Petri Net is stored for later use in differential debugging. A trace is obtained from a later execution of the concurrent program that did not execute properly. The later trace is run against the Petri Net to identify at least one difference. A Petri Net can also be used for model checking of concurrent programs. A model checking process is performed to analyze possible executions in the Petri Net to look for one or more problems. A result of the model checking process is output.
23 Citations
12 Claims
-
1. A computer-readable storage medium having computer-executable instructions for causing a computer to perform steps comprising:
-
obtain at least one initial trace from a concurrent program that executed properly; use the at least one initial trace to create a Petri Net; using the at least one trace to generate unique label or task identifiers for a Petri Net; obtain a later trace from a later execution of the concurrent program that did not execute properly; and run the later trace against the Petri Net to identify at least one difference by comparing the Petri Net to the later trace corresponding to a subsequent execution of the concurrent program where the concurrent program executed improperly, wherein the comparing includes determining whether a transition in the Petri Net has at least one of the corresponding label or task identifier in the later trace. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for generating a Petri Net for use in differential debugging of a concurrent program comprising the steps of:
-
obtaining at least one trace from a concurrent program that executed properly; obtain a later trace from a later execution of the concurrent program that did not execute properly; using the at least one trace to generate unique label or task identifiers for a Petri Net; using the trace to generate places of interest for the Petri Net; adding transitions to the Petri Net; storing the resulting Petri Net for later use in differential debugging; and comparing the Petri Net to a later trace corresponding to a subsequent execution of the concurrent program where the concurrent program executed improperly, wherein the comparing includes determining whether a transition in the Petri Net has at least one of the corresponding label or task identifier in the later trace. - View Dependent Claims (10, 11, 12)
-
Specification