CN104077144A - Data race detection and evidence generation method based on multithreaded program constraint building - Google Patents
Data race detection and evidence generation method based on multithreaded program constraint building Download PDFInfo
- Publication number
- CN104077144A CN104077144A CN201410320943.2A CN201410320943A CN104077144A CN 104077144 A CN104077144 A CN 104077144A CN 201410320943 A CN201410320943 A CN 201410320943A CN 104077144 A CN104077144 A CN 104077144A
- Authority
- CN
- China
- Prior art keywords
- constraint
- thread
- event
- data contention
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
The invention provides a data race detection and evidence generation method based on multithreaded program constraint building. The data race detection problem is converted into a constraint solving problem by building a constraint expression according to the multithreaded program semanteme, a constraint solver is used for detecting possible data races and program execution paths triggering the data races are generated; the data race detection and evidence generation method comprises the steps of firstly, carrying out the instrumentation of the detected program, executing the program and obtaining an execution path, secondly, converting the execution path into a quantifier-free first-order logic expression covering all feasible thread interleaving according to the multithreaded program execution semanteme, thirdly, building a data race candidate set according to the sequential relationship of statements when a data race happens and generating candidate conditions for races, and finally, traversing the candidate set to determine whether the data race exists, and if so, generating a corresponding evidence sequence. The method is capable of finding out all data races in once operation without misinformation; for each data race, the evidence sequence indicating the trigger process of the data race is generated.
Description
Technical field
The present invention relates to trusted software and software test field, particularly a kind of data contention that constraint builds based on multithread programs detects and evidence generation method.
Background technology
Universal along with processor multinucleation, multithreading has become and in software programming, has improved the indispensable technology of cpu busy percentage.Yet, due to the uncertainty interweaving between thread, in multithread programs implementation, may occur that some behaviors that are difficult to expect cause program to be made mistakes, for example synchronous working is not carried out in critical section and the data contention problem that causes.Data contention is that two different threads are not having synchronous protective situation to access an internal memory simultaneously, and has a write operation at least.Data contention not necessarily causes program error, because some programmer deliberately allows program have data contention to improve the efficiency of operation, but has investigation to show that the data contention of 5-24% can produce bad influence to program.Data contention is difficult to be found, because they often occur in the interleaved sequence of some low probability appearance, in reality, often need to spend a lot of time to go to location, its mistake causing is as " corner error ", even also may not remove them completely when software is issued.Therefore, data contention detection is one of multithread programs field tests research point of greatest concern.
In the past few decades, data contention detects existing large quantity research, designs a lot of outstanding robotization testing tools, is mainly divided into static and dynamic state technology.Static method carrys out all data contentions in deduction program by all paths of Static Detection program, can detect most of data contention; But owing to using a large amount of hypothesis, Static Analysis Method can produce invalid data contention, causes rate of false alarm higher.Dynamic approach by monitoring, once carry out in internal memory and synchronizing information to determine whether to exist data contention, the testing result of degree of precision can be provided; The impact with path but dynamic analysing method is subject to interweaving, often will be by repeatedly carrying out to improve coverage rate.Herein static code analysis is combined with program process monitoring, to improve coverage rate and to eliminate as far as possible wrong report.
Existing dynamic detection technology is mainly divided into three kinds: based on lockset, method based on happens-before and the two combination.1) method based on lockset thread is interweaved insensitive, but there is wrong report situation, i.e. ineffective coping.2) method based on happens-before only detects the data contention on certain specific interleaved sequence, though testing result is reliable, is sensitive to thread and interweaves.3) mixed method combines both advantages, and attempts to reduce shortcoming separately, but also faces as searched out hiding mistake, the high problems such as invalid warning that cause of reporting by mistake of lockset.
Summary of the invention
In order to overcome the shortcoming of above-mentioned prior art, the object of the present invention is to provide a kind of data contention that constraint builds based on multithread programs to detect and evidence generation method, according to the semantic constraint expression formula that builds of multithread programs, data contention test problems is converted into constraint solving problem, adopt constraint solver to detect the data contention that may exist, and generate the program execution path of trigger data competition.
To achieve these goals, the technical solution used in the present invention is:
A kind of data contention that constraint builds based on multithread programs detects and evidence generation method, comprises the steps:
S1) under given input, by what carry out pitching pile, treat that measuring program is with generation pass log file, and identify publicly-owned variable in execution route accessing points so that constraint build;
S2) according to program, carrying out semantic is quantifier-free first order logic expression formula by the transformation that interweaves of state transitions, thread in execution route, builds the multithread programs execution route restricted model F that has contained all possible interleaved sequence;
S3) 2 that data contention may occur on all threads in path are considered as to data contention candidate, collect all candidates and build data contention candidate collection DRCS, according to the definition of data contention, build each candidate's competition occurrence condition ρ simultaneously;
S4) for each candidate, compete occurrence condition ρ, utilize constraint solver checking F ∧ ρ whether to have solution;
S5), if there is solution, represent that this race condition can trigger real data contention; If without solution, represent that this candidate can trigger data not compete;
S6), when there is data contention, export the evidence sequence of this data contention;
S7), for data contention candidate collection DRCS, if traversal finishes, export all results; Otherwise, continue the next competition of traversal candidate;
S8) after checking finishes, all data contentions that output detections arrives and corresponding evidence sequence.
The present invention further improves and is: described step S1), pitching pile work is not carried out in source code or binary aspect, but complete in the aspect of bytecode, specific implementation method is: first multithread programs source code to be measured is converted into intermediary bytes code form, i.e. LLVM bytecode; Then the statement with monitoring function is implanted and treated measuring program; Finally the bytecode of implant monitor code is linked into executable program.
The present invention further improves and is: described step S2), multithread programs execution route restricted model F has contained all possible interleaved sequence of execution route, comprise five kinds of constraints: path expression, memory model constraint, read-write relation constraint, partial order constraint and synchronization semantics constraint, definition is as follows respectively:
1) path expression: describe definition-use chain of thread inside, and control the conversion of thread internal state;
2) memory model constraint: the relation in representation program between statement, variable, the semanteme of employing Ordinal Consistency, Ordinal Consistency regulation CPU carrys out executive routine according to the order of statement in code;
3) read-write relation constraint: definition-use chain of definition cross-thread, the value that regulation shared variable reads, must be from initial value and the nearest value of writing;
4) partial order constraint: create thread and terminate thread action statement between definition thread in the sequential relationship by between operation thread statement;
5) synchronization semantics constraint: the sequential relationship between definition thread between synchro control action statement;
Wherein, definition-use chain to be: each thread sequence is converted into SSA form, and for the execution sequence of each SSA form, removing share and access point is all complete definition-use chain.
The present invention further improves and is: described step S2), the construction method of multithread programs execution route restricted model F comprises following operation:
1) calculating path expression formula, shifts to control thread internal state;
2) calculate memory model constraint, to limit the relation between statement in thread;
3) calculate read-write relation constraint, to set up definition-use chain of cross-thread;
4) calculate synchronization semantics constraint, to define cross-thread synchronized relation;
5) calculate partial order constraint, to describe the semanteme of thread creation and termination;
Finally, in conjunction with above five kinds of constraints, form restricted model F.
The present invention further improves and is: definition execution route event sets
wherein k is number of threads, T
i={ e
1, e
2..., e
nas the execution sequence of thread i, e
nrepresent T
in event, O (e
n) presentation of events e
norder, n represents T
ievent number:
The computing method of described path expression:
Each thread sequence is converted into SSA form, is similar to the collection of path condition (Path Condition), directly SSA layout sequence is converted into path expression;
The computing method of described memory model constraint:
Adopt sequential consistency model, the order of the complete follow procedure of all operations is carried out, and the event sequence in thread meets constraint:
E wherein
iwith e
i+1represent two continuous events in same thread, τ represents all thread sequence;
The computing method of described read-write relation constraint:
What make shared variable reads to come from nearest writing, and for same shared variable v, makes R as all event sets that it is carried out to read operation, makes W as all event sets that it is carried out to write operation, provides following formula:
Wherein, e
rfor reading event, e
wwith e
xfor writing event, v
rand v
wfor event e
rwith e
woperated variable, the expressed meaning of formula is, if event e
rin v
rvalue comes from event e
win v
w, first to meet e
rat e
wafterwards, i.e. O (e
w) < O (e
r); Then to meet all write or at e
wbefore, or at e
rafterwards;
The computing method of described synchronization semantics constraint comprise lock/unlock and wait/signal two generic operations:
1) object of lock/unlock operation is for building the constraint of lock synchronization semantics, in the lock/unlock set L requiring in same mutual exclusion lock, for any two lock/unlock event pair: l
i/ u
iwith l
k/ u
k, must meet formula:
Wherein, lock is to l
i/ u
ioccur in lock to l
k/ u
kbefore, or occur in thereafter;
2) object of wait/signal operation is to build the constraint of conditional-variable synchronization semantics, satisfy condition: each wait operation must operate by a corresponding signal, and signal is operated to and wakes a wait operation more up, for identical conditions variable cond, make WT as the set of all wait operations on cond, make SG as the set of all signal operations on cond, the condition as on will meeting, must have following formula:
Wherein, e
wtfor the arbitrary element in WT, SG
wtrepresent e
wtthe set of the signal operation that can mate, e
sgfor SG
wtin arbitrary signal Action Events, utilize variable
whether equal 1 and represent e
sgwhether with e
wtmatch.Subformula
represent, for each wait operation e
wtmust there is a signal operation to match;
The computing method of described partial order constraint:
First stipulate: if event creates a thread, all events that are created so thread all will be carried out after this event; If event execution thread terminating operation, all events that are terminated so thread all will be before this event; Making C is the event sets of create/fork operation, makes J as the event sets of join operation; Given constraint:
Wherein, e
cfor thread creation event, first (e
c) be e
cthe order of the first event of thread creating; e
ifor thread stops event; Last (e
j) be e
jthe order of the thread end event finishing;
Above five kinds of constraints and formation restricted model F.
The present invention further improves and is: described step S3), the construction method of competition occurrence condition ρ is as follows: if there is paths τ=< τ
1e
ie
jτ
2>, wherein τ
1prefix, τ
2suffix, event e
iwith e
jbelong to different threads and all access same internal memory, having at least one to write, data contention has occurred between the two so, and τ regarding e as
iwith e
jthe evidence sequence of data contention; Event e for the same variable of access
iwith ek, e '
iwith e "
irepresent respectively e
iprevious event and a rear event; Equally, e '
kwith e "
krepresent respectively e
kprevious event and a rear event, there is data contention and access the condition ρ of same internal memory simultaneously and be in both so:
O(e′
i)<O(e
k)<O(e″
i)∧O(e′
k)<O(e
i)<O(e″
k)。
The present invention further improves and is: described step S7), for each data contention, can generate evidence sequence, to describe its trigger process.
Compared with prior art, the invention has the beneficial effects as follows:
(1) propose a kind of multithread programs constraint and build model, once executory data contention test problems is converted into constraint solving problem.This model retrains structure according to Program Semantics, and constructed expression formula has comprised all possible interleaved sequence, and then detects all data contentions in execution route.
(2) all data contentions all being produced to an evidence sequence, is the information how to be triggered so that data contention to be provided to user.
(3) to carrying out sequence, carry out ex-post analysis, the huge run-time overhead that does not exist on-the-fly technology to produce.
Accompanying drawing explanation
Fig. 1 is the inventive method overall flow figure.
Fig. 2 is multithread programs path constraint construction method process flow diagram.
Embodiment
Below in conjunction with accompanying drawing and example in detail embodiments of the present invention.
Treat that measuring program is as follows, x and y are shared variable, and thread 0 has created thread 1 and thread 2.
As shown in Figure 1, data contention of the present invention detects and evidence generation method, comprises the steps:
Step S1): monitor code is implanted to tested program, so that the implementation of program is carried out to record.Under given input, carry out example procedure, record path π=[1,2,3,4,5,6,7,8,9,10,11]; Then, identify shared variable accessing points, comprise { 1,5,7,9,10}.
Step S2): according to program, carrying out semantic is quantifier-free first order logic expression formula by the transformation that interweaves of state transitions, thread in execution route, build the restricted model F of execution route π, comprise path expression, memory model constraint, read-write relation constraint, partial order constraint, synchronization semantics constraint.Whole restricted model F has contained all possible interleaved sequence of execution route.Particularly, as shown in Figure 2, according to following steps, generate corresponding logical expression:
S201) first, the share and access point according to identifying, is converted into SSA form by path π, as follows:
2:create(1);
3:create(2);
4:lock(m);
6:unlock(m);
8:lock(m);
11:unlock(m);
Wherein, for the subscript of global variable x and y, represent to read (r) or write (w), superscript is distinguished different read or writes, and superscript is 0 to be expressed as initial assignment.
Then, according to the SSA form in path, directly calculate the path expression of path π, following formula:
S202) build memory model constraint, adopt sequential consistency model, the order of regulation all operations follow procedure is carried out.According to formula:
Calculate the memory model constraint of path π, as following formula:
o(e
1)<o(e
2)<o(e
3)∧
o(e
4)<o(e
5)<o(e
6)<o(e
7)∧
o(e
8)<o(e
9)<o(e
10)<o(e
11)
Wherein, o
irepresent the arrangement sequence number in i line statement interleaved sequence.
S203) calculate read-write sequence constraint, what make shared variable reads to come from nearest writing.For same shared variable v, make R as all event sets that it is carried out to read operation, make W, as all, it be carried out to the event sets of write operation.Provide following formula:
Wherein, e
rfor reading event, e
wwith e
xfor writing event.The expressed meaning of formula is, if event e
rin v
rvalue comes from event e
win v
w, first to meet e
rat e
wafterwards, i.e. O (e
w) < O (e
r); Then to meet all write or at e
wbefore, or at e
rafterwards.
In the π of path, for global variable x, R={e
9, W={e
0, e
1, e
5, e
9, the following formula of its read-write relational expression:
Wherein, to the read-write of variable x, may enumerate, when the 9th row x read to come from the writing of the 1st row x time, should meet: the 1st row is before the 9th row, and the 5th row can not occur between the two writing of x.The situation of y variable is similar to x.
S204) calculate synchronization semantics constraint, comprise lock/unlock and wait/signal two generic operations:
1) while building lock synchronization semantics constraint (lock/unlock operation), in the lock/unlock set L requiring in same mutual exclusion lock, for any two lock/unlock event pair: l
i/ u
iwith l
k/ u
k, must meet formula:
Wherein, lock is to l
i/ u
ioccur in lock to l
k/ u
kbefore, or occur in thereafter.
2) while building conditional-variable synchronization semantics constraint (wait/signal), satisfy condition: each wait operation must corresponding signal operation, and signal is operated to and wakes a wait more up and operate.For identical conditions variable cond, make WT as the set of all wait operations on cond, make SG as the set of all signal operations on cond.Condition as on will meeting, must have following formula:
Wherein, make e
wtfor an element in WT, SG
wtrepresent e
wtthe set of the signal operation that can mate, WT
sgrepresent e
sgthe set of the wait operation that can mate.Utilize variable herein
whether equal 1 and represent e
sgwhether with e
wtmatch.Subformula
represent, for each wait operation e
wtmust there is a signal operation to match.
In the π of path, only have lock m, synchronization semantics constraint formulations is as follows:
o(e
6)<o(e
8)∨o(e
11)<o(e
4)
Wherein, constraint expression formula represent otherwise thread 1 first obtain lock o
6< o
8, or thread 2 first obtains lock o
11< o
4.
S205) calculate partial order constraint, its regulation: if event creates a thread, all events that are created so thread all will be carried out after this event.If event execution thread terminating operation, all events that are terminated so thread all will be before this event.Making C is the event sets of create/fork operation, makes J as the event sets of join operation.Given constraint:
Wherein, e
cfor thread creation event, first (e
c) be e
cthe order of the first event of thread creating; e
jfor thread stops event; Last (e
j) be e
jthe order of the thread end event finishing.
In the π of path, thread creation statement is O
2, O
3, its partial ordering relation retrains following formula:
o(e
2)<o(e
4)∧o(e
3)<o(e
8)
Wherein, constraint representation thread creation statement the 2nd row is carried out before it is created the first event of thread 1.
S206) above five kinds of constraints are carried out with, obtain restricted model F.
Step S3): build data contention candidate collection, and the competition occurrence condition that generates each candidate.Event e for the same variable of access
iwith e
k, e '
iwith e "
irepresent respectively e
iprevious event and a rear event; Equally, e '
kwith e "
krepresent respectively e
kprevious event and a rear event, the condition ρ that data contention (simultaneously accessing same internal memory) occurs for both is so:
O(e′
i)<O(e
k)<O(e″
i)∧O(e′
k)<O(e
i)<O(e″
k)。
Candidate collection in this example and competition occurrence condition are as follows:
Candidate's occurrence condition
<1,5>?o(e
5)<o(e
2)∧o(e
4)<o(e
1)<o(e
6)
<1,9>?o(e
9)<o(e
2)∧o(e
8)<o(e
1)<o(e
10)
<5,9>?o(e
4)<o(e
9)<o(e
6)∧o(e
8)<o(e
5)<o(e
10)
<7,10>?o(e
6)<o(e
10)∧o(e
9)<o(e
7)<o(e
11)
Data contention is defined as and ought accesses same internal memory by two threads simultaneously, and has a write operation at least.Take the 4th candidate as example explanation, o (e
6) < o (e
10) ∧ o (e
9) < o (e
7) < o (e
11) represent to occur between the 7th row and the 10th row the condition of data contention, wherein o (e
9) < o (e
7) < o (e
11) represent that the 7th row can occur between the last event (the 9th row) and a rear event (the 11st row) of the 10th row; Due to the 7th behavior thread end, therefore only use o (e
6) < o (e
10).This race condition is set up explanation the 7th row and the 10th row can be accessed same variable y simultaneously, occurs data contention.
Step S4 mono-S7): for each candidate, utilize solver to solve F ∧ ρ, whether candidates all in verification msg competition candidate collection DRCS are valid data competitions.Below verify one by one each candidate:
Checking F ∧ o (e
5) < o (e
2) ∧ o (e
4) < o (e
1) < o (e
6), result draws the 1st row and the 5th capable data contention that do not occur;
Checking F ∧ o (e
9) < o (e
2) ∧ o (e
8) < o (e
1) < o (e
10), result draws the 1st row and the 9th capable data contention that do not occur;
Checking F ∧ o (e
4) < o (e
9) < o (e
6) ∧ o (e
8) < o (e
5) < o (e
10), result draws the 5th row and the 9th capable data contention that do not occur;
Checking F ∧ o (e
6) < o (e
10) ∧ o (e
9) < o (e
7) < o (e
11), result draws data contention between the 7th row and the 9th row, and evidence sequence is: 1,2,3,4,5,6,8,9,10,7,11.
After having traveled through DRCS, stop checking work.
Step S8) collect all data contentions and corresponding evidence sequence.
Claims (7)
1. the data contention that constraint builds based on multithread programs detects and evidence generation method, it is characterized in that, comprises the steps:
S1) under given input, by what carry out pitching pile, treat that measuring program is with generation pass log file, and identify publicly-owned variable in execution route accessing points so that constraint build;
S2) according to program, carrying out semantic is quantifier-free first order logic expression formula by the transformation that interweaves of state transitions, thread in execution route, builds the multithread programs execution route restricted model F that has contained all possible interleaved sequence;
S3) 2 that data contention may occur on all threads in path are considered as to data contention candidate, collect all candidates and build data contention candidate collection DRCS, according to the definition of data contention, build each candidate's competition occurrence condition ρ simultaneously;
S4) for each candidate, compete occurrence condition ρ, utilize constraint solver checking F ∧ ρ whether to have solution;
S5), if there is solution, represent that this race condition can trigger real data contention; If without solution, represent that this candidate can trigger data not compete;
S6), when there is data contention, export the evidence sequence of this data contention;
S7), for data contention candidate collection DRCS, if traversal finishes, export all results; Otherwise, continue the next competition of traversal candidate;
S8) after checking finishes, all data contentions that output detections arrives and corresponding evidence sequence.
2. the data contention that constraint builds based on multithread programs according to claim 1 detects and evidence generation method, it is characterized in that, described step S1) in, pitching pile work is not carried out in source code or binary aspect, but complete in the aspect of bytecode, specific implementation method is: first multithread programs source code to be measured is converted into intermediary bytes code form, i.e. LLVM bytecode; Then the statement with monitoring function is implanted and treated measuring program; Finally the bytecode of implant monitor code is linked into executable program.
3. the data contention that constraint builds based on multithread programs according to claim 1 detects and evidence generation method, it is characterized in that, described step S2) in, multithread programs execution route restricted model F has contained all possible interleaved sequence of execution route, comprise five kinds of constraints: path expression, memory model constraint, read-write relation constraint, partial order constraint and synchronization semantics constraint, definition is as follows respectively:
1) path expression: describe definition-use chain of thread inside, and control the conversion of thread internal state;
2) memory model constraint: the relation in representation program between statement, variable, the semanteme of employing Ordinal Consistency, Ordinal Consistency regulation CPU carrys out executive routine according to the order of statement in code;
3) read-write relation constraint: definition-use chain of definition cross-thread, the value that regulation shared variable reads, must be from initial value and the nearest value of writing;
4) partial order constraint: create thread and terminate thread action statement between definition thread in the sequential relationship by between operation thread statement;
5) synchronization semantics constraint: the sequential relationship between definition thread between synchro control action statement;
Wherein, definition-use chain to be: each thread sequence is converted into SSA form, and for the execution sequence of each SSA form, removing share and access point is all complete definition-use chain.
4. the data contention building based on multithread programs constraint according to claim 3 detects and the evidence method of generationing, it is characterized in that described step S2) construction method of middle multithread programs execution route restricted model F comprises following operation:
1) calculating path expression formula, shifts to control thread internal state;
2) calculate memory model constraint, to limit the relation between statement in thread;
3) calculate read-write relation constraint, to set up definition-use chain of cross-thread;
4) calculate synchronization semantics constraint, to define cross-thread synchronized relation;
5) calculate partial order constraint, to describe the semanteme of thread creation and termination;
Finally, in conjunction with above five kinds of constraints, form restricted model F.
5. the data contention that constraint builds based on multithread programs according to claim 4 detects and evidence generation method, it is characterized in that definition execution route event sets
wherein k is number of threads, T
i={ e
1, e
2..., e
nas the execution sequence of thread i, e
nrepresent T
in event, O (e
n) presentation of events e
norder, n represents T
ievent number:
The computing method of described path expression:
Each thread sequence is converted into SSA form, directly SSA layout sequence is converted into path expression;
The computing method of described memory model constraint:
Adopt sequential consistency model, the order of the complete follow procedure of all operations is carried out, and the event sequence in thread meets constraint:
E wherein
iwith e
i+1represent two continuous events in same thread, τ represents all thread sequence;
The computing method of described read-write relation constraint:
What make shared variable reads to come from nearest writing, and for same shared variable v, makes R as all event sets that it is carried out to read operation, makes W as all event sets that it is carried out to write operation, provides following formula:
Wherein, e
rfor reading event, e
wwith e
xfor writing event, v
rand v
wfor event e
rwith e
woperated variable, the expressed meaning of formula is, if event e
rin v
rvalue comes from event e
win v
w, first to meet e
rat e
wafterwards, i.e. O (e
w) < O (e
r); Then to meet all write or at e
wbefore, or at e
rafterwards;
The computing method of described synchronization semantics constraint comprise lock/unlock and wait/signal two generic operations:
1) object of lock/unlock operation is for building the constraint of lock synchronization semantics, in the lock/unlock set L requiring in same mutual exclusion lock, for any two lock/unlock event pair: l
i/ u
iwith l
k/ u
k, must meet formula:
Wherein, lock is to l
i/ u
ioccur in lock to l
k/ u
kbefore, or occur in thereafter;
2) object of wait/signal operation is to build the constraint of conditional-variable synchronization semantics, satisfy condition: each wait operation must operate by a corresponding signal, and signal is operated to and wakes a wait operation more up, for identical conditions variable cond, make WT as the set of all wait operations on cond, make SG as the set of all signal operations on cond, the condition as on will meeting, must have following formula:
Wherein, e
wtfor the arbitrary element in WT, SG
wtrepresent e
wtthe set of the signal operation that can mate, e
sgfor SG
wtin arbitrary signal Action Events, utilize variable
whether equal 1 and represent e
sgwhether with e
wtmatch.Subformula
represent, for each wait operation e
wtmust there is a signal operation to match;
The computing method of described partial order constraint:
First stipulate: if event creates a thread, all events that are created so thread all will be carried out after this event; If event execution thread terminating operation, all events that are terminated so thread all will be before this event; Making C is the event sets of create/fork operation, makes J as the event sets of join operation; Given constraint:
Wherein, e
cfor thread creation event, first (e
c) be e
cthe order of the first event of thread creating; e
jfor thread stops event; Last (e
j) be e
jthe order of the thread end event finishing;
Above five kinds of constraints and formation restricted model F.
6. the data contention that constraint builds based on multithread programs according to claim 1 detects and evidence generation method, it is characterized in that described step S3) in the construction method of competition occurrence condition ρ as follows: if there is paths τ=< τ
1e
ie
jτ
2>, wherein τ
1prefix, τ
2suffix, event e
iwith e
jbelong to different threads and all access same internal memory, having at least one to write, data contention has occurred between the two so, and τ regarding e as
iwith e
jthe evidence sequence of data contention; Event e for the same variable of access
iwith e
k, e '
iwith e "
irepresent respectively e
iprevious event and a rear event; Equally, e '
kwith e "
krepresent respectively e
kprevious event and a rear event, there is data contention and access the condition ρ of same internal memory simultaneously and be in both so:
O(e′
i)<O(e
k)<O(e″
i)∧O(e′
k)<O(e
i)<O(e″
k)。
7. the data contention building based on multithread programs constraint according to claim 1 detects and evidence generation method, it is characterized in that described step S7) in for each data contention, can generate evidence sequence, to describe its trigger process.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410320943.2A CN104077144B (en) | 2014-07-07 | 2014-07-07 | Data race detection and evidence generation method based on multithreaded program constraint building |
PCT/CN2015/081062 WO2016004808A1 (en) | 2014-07-07 | 2015-06-09 | Method for data contention testing and proof-generation, based on multithreaded program constraint construction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410320943.2A CN104077144B (en) | 2014-07-07 | 2014-07-07 | Data race detection and evidence generation method based on multithreaded program constraint building |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077144A true CN104077144A (en) | 2014-10-01 |
CN104077144B CN104077144B (en) | 2015-06-03 |
Family
ID=51598415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410320943.2A Active CN104077144B (en) | 2014-07-07 | 2014-07-07 | Data race detection and evidence generation method based on multithreaded program constraint building |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104077144B (en) |
WO (1) | WO2016004808A1 (en) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183655A (en) * | 2015-09-25 | 2015-12-23 | 南京大学 | Android application program data race detection based on predictability analysis |
WO2016004808A1 (en) * | 2014-07-07 | 2016-01-14 | 西安交通大学 | Method for data contention testing and proof-generation, based on multithreaded program constraint construction |
CN106227656A (en) * | 2016-07-18 | 2016-12-14 | 中国科学院软件研究所 | A kind of data contention sample detecting method based on hardware and thread-local sequential |
CN106294169A (en) * | 2016-08-17 | 2017-01-04 | 华中科技大学 | The detection of a kind of data contention based on semiology analysis virtual machine and playback method |
CN106598845A (en) * | 2016-11-18 | 2017-04-26 | 华中科技大学 | Block HB (Happens-Before) based dynamic data race detection method and system |
WO2017181628A1 (en) * | 2016-04-19 | 2017-10-26 | 西安交通大学 | Taint analysis method employing symbolic computation and used for dynamic parallel program |
CN107992324A (en) * | 2017-12-22 | 2018-05-04 | 南京大学 | A kind of code search method based on constraint solving |
CN108604192A (en) * | 2016-02-08 | 2018-09-28 | 微软技术许可有限责任公司 | Daily record is waited for call the thread transfer returned |
CN110059014A (en) * | 2019-04-28 | 2019-07-26 | 西安邮电大学 | A kind of concurrent program data contention instruction-level localization method |
CN110083539A (en) * | 2019-04-29 | 2019-08-02 | 广州华多网络科技有限公司 | A kind of data contention detection method and device |
CN111431737A (en) * | 2020-03-02 | 2020-07-17 | 苏州市职业大学 | Predictive method for detecting data competition in software defined network |
CN111858361A (en) * | 2020-07-23 | 2020-10-30 | 中国人民解放军国防科技大学 | Atomic violation defect detection method based on prediction and parallel verification strategies |
CN113407447A (en) * | 2021-06-15 | 2021-09-17 | 西安邮电大学 | Self-adaptive lightweight dynamic hybrid data competition detection method |
CN115080374A (en) * | 2021-03-11 | 2022-09-20 | 中国科学院软件研究所 | General concurrent defect detection method and system based on partial order relation |
CN115794592A (en) * | 2023-02-10 | 2023-03-14 | 南京邮电大学 | Data competition detection method based on high-order function |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201732B (en) * | 2016-07-18 | 2019-05-14 | 电子科技大学 | The line of removal data contention distributes parallel method in particle simulation algorithm is parallel |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760095A (en) * | 2011-04-25 | 2012-10-31 | 清华大学 | Dynamic data race detection method based on static shared variable recognition |
CN103198025A (en) * | 2012-01-04 | 2013-07-10 | 国际商业机器公司 | Method and system form near neighbor data cache sharing |
US20130275951A1 (en) * | 2012-04-16 | 2013-10-17 | International Business Machines Corporation | Race detection for web applications |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200474B2 (en) * | 2008-05-08 | 2012-06-12 | Nec Laboratories America, Inc. | Dynamic model checking with property driven pruning to detect race conditions |
CN103488563B (en) * | 2013-09-05 | 2017-04-12 | 龙芯中科技术有限公司 | Data race detection method and device for parallel programs and multi-core processing system |
CN104077144B (en) * | 2014-07-07 | 2015-06-03 | 西安交通大学 | Data race detection and evidence generation method based on multithreaded program constraint building |
-
2014
- 2014-07-07 CN CN201410320943.2A patent/CN104077144B/en active Active
-
2015
- 2015-06-09 WO PCT/CN2015/081062 patent/WO2016004808A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760095A (en) * | 2011-04-25 | 2012-10-31 | 清华大学 | Dynamic data race detection method based on static shared variable recognition |
CN103198025A (en) * | 2012-01-04 | 2013-07-10 | 国际商业机器公司 | Method and system form near neighbor data cache sharing |
US20130275951A1 (en) * | 2012-04-16 | 2013-10-17 | International Business Machines Corporation | Race detection for web applications |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016004808A1 (en) * | 2014-07-07 | 2016-01-14 | 西安交通大学 | Method for data contention testing and proof-generation, based on multithreaded program constraint construction |
CN105183655B (en) * | 2015-09-25 | 2017-12-12 | 南京大学 | Android application program data contention detection based on predictability analysis |
CN105183655A (en) * | 2015-09-25 | 2015-12-23 | 南京大学 | Android application program data race detection based on predictability analysis |
CN108604192B (en) * | 2016-02-08 | 2021-11-19 | 微软技术许可有限责任公司 | System, method, and medium for performing one or more tasks while waiting for an event to be recorded |
CN108604192A (en) * | 2016-02-08 | 2018-09-28 | 微软技术许可有限责任公司 | Daily record is waited for call the thread transfer returned |
WO2017181628A1 (en) * | 2016-04-19 | 2017-10-26 | 西安交通大学 | Taint analysis method employing symbolic computation and used for dynamic parallel program |
CN106227656A (en) * | 2016-07-18 | 2016-12-14 | 中国科学院软件研究所 | A kind of data contention sample detecting method based on hardware and thread-local sequential |
CN106227656B (en) * | 2016-07-18 | 2018-07-17 | 中国科学院软件研究所 | A kind of data contention sample detecting method based on hardware and thread-local sequential |
CN106294169A (en) * | 2016-08-17 | 2017-01-04 | 华中科技大学 | The detection of a kind of data contention based on semiology analysis virtual machine and playback method |
CN106294169B (en) * | 2016-08-17 | 2018-08-03 | 华中科技大学 | A kind of data contention detection and playback method based on semiology analysis virtual machine |
CN106598845A (en) * | 2016-11-18 | 2017-04-26 | 华中科技大学 | Block HB (Happens-Before) based dynamic data race detection method and system |
CN106598845B (en) * | 2016-11-18 | 2019-04-12 | 华中科技大学 | A kind of Data Race detection method and system based on block partial order |
CN107992324A (en) * | 2017-12-22 | 2018-05-04 | 南京大学 | A kind of code search method based on constraint solving |
CN110059014A (en) * | 2019-04-28 | 2019-07-26 | 西安邮电大学 | A kind of concurrent program data contention instruction-level localization method |
CN110059014B (en) * | 2019-04-28 | 2022-09-27 | 西安邮电大学 | Concurrent program data competition instruction level positioning method |
CN110083539A (en) * | 2019-04-29 | 2019-08-02 | 广州华多网络科技有限公司 | A kind of data contention detection method and device |
CN110083539B (en) * | 2019-04-29 | 2020-11-13 | 广州华多网络科技有限公司 | Data competition detection method and device |
CN111431737A (en) * | 2020-03-02 | 2020-07-17 | 苏州市职业大学 | Predictive method for detecting data competition in software defined network |
CN111858361A (en) * | 2020-07-23 | 2020-10-30 | 中国人民解放军国防科技大学 | Atomic violation defect detection method based on prediction and parallel verification strategies |
CN111858361B (en) * | 2020-07-23 | 2023-07-21 | 中国人民解放军国防科技大学 | Atomic violation defect detection method based on prediction and parallel verification strategy |
CN115080374A (en) * | 2021-03-11 | 2022-09-20 | 中国科学院软件研究所 | General concurrent defect detection method and system based on partial order relation |
CN113407447A (en) * | 2021-06-15 | 2021-09-17 | 西安邮电大学 | Self-adaptive lightweight dynamic hybrid data competition detection method |
CN113407447B (en) * | 2021-06-15 | 2022-09-27 | 西安邮电大学 | Self-adaptive lightweight dynamic hybrid data competition detection method |
CN115794592A (en) * | 2023-02-10 | 2023-03-14 | 南京邮电大学 | Data competition detection method based on high-order function |
CN115794592B (en) * | 2023-02-10 | 2023-07-04 | 南京邮电大学 | Data competition detection method based on higher-order function |
Also Published As
Publication number | Publication date |
---|---|
CN104077144B (en) | 2015-06-03 |
WO2016004808A1 (en) | 2016-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077144B (en) | Data race detection and evidence generation method based on multithreaded program constraint building | |
CN104077226B (en) | Multithreaded program output uniqueness detection and evidence generation method based on program constraint building | |
Hazimeh et al. | Magma: A ground-truth fuzzing benchmark | |
Betts et al. | GPUVerify: a verifier for GPU kernels | |
CN105955877B (en) | A kind of dynamic parallel program stain analysis method based on sign computation | |
Flanagan et al. | Adversarial memory for detecting destructive races | |
Şerbănuţă et al. | Maximal causal models for sequentially consistent systems | |
EP2485149A1 (en) | Symbolic execution and test generation for programs to be run on a graphic processor | |
CN105868116A (en) | Semantic mutation operator based test case generation and optimization method | |
Donaldson et al. | Automatic analysis of scratch-pad memory code for heterogeneous multicore processors | |
CN105468517B (en) | A kind of mistake of statistics localization method based on Black-box testing Cases yojan | |
Chen et al. | Mc-checker: Detecting memory consistency errors in mpi one-sided applications | |
US20160378639A1 (en) | Debugging using program state definitions | |
CN110245085B (en) | Embedded real-time operating system verification method and system by using online model inspection | |
US8141082B2 (en) | Node-based representation of multi-threaded computing environment tasks, and node-based data race evaluation | |
Křena et al. | Coverage metrics for saturation-based and search-based testing of concurrent software | |
CN103294596A (en) | Early warning method for contract-type software fault based on program invariants | |
Cai et al. | LOFT: redundant synchronization event removal for data race detection | |
Mansky et al. | Verifying dynamic race detection | |
Jiang et al. | Detecting Transactional Bugs in Database Engines via {Graph-Based} Oracle Construction | |
CN105138914A (en) | Software security detection method for code reuse programming | |
JPWO2021124411A1 (en) | A program that enables a logically coupled program to verify the legitimacy of an asynchronous algorithm that occurs at run time. | |
Jalbert et al. | Using clone detection to identify bugs in concurrent software | |
Goodstein et al. | Chrysalis analysis: Incorporating synchronization arcs in dataflow-analysis-based parallel monitoring | |
Zhang et al. | Automated testing of definition-use data flow for multithreaded programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |