Opened 17 years ago

Closed 17 years ago

#62 closed defect (fixed)

infinite loop when verifying simpleMPSpec

Reported by: ywei Owned by: Stephen Siegel
Priority: major Milestone:
Component: search Version: 1.0
Keywords: Cc:

Description

command:
tass verify -verbose simpleMPSpec.mmp -np 2
The infinite loop will occur when the verifier checks all the states and want to return from program.

...
Step 19: State 18 -- simpleMPSpec.mmp line 22 proc 1 [main@10->main@11] "t = m;" -> State 19

begin State 19

onStack = true;
seen = true;
pathCondition : true
begin model state

begin shared variables

s = 0;
t = 5;

end shared variables;
begin process 0
end process 0;
begin process 1

begin stack frame 0

function : main;
location : 11;
i = 5;
j = 7;
k = 0;
m = 5;

end stack frame 0;

end process 1;

end model state

end State 19

Step 20: State 19 -- simpleMPSpec.mmp proc 1 [main@11->main@12] "[implicit return]"
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid
CVC3 prover invoked with query: TRUE under context TRUE
Valid

It seems the transition system keeps adding the implicit return as a new transition. But the DfsSearcher thinks it has seen the state before. So the program loops forever.

Change History (1)

comment:1 by Stephen Siegel, 17 years ago

Resolution: fixed
Status: newclosed

The logic in the proceedToNext method had a bug. If numProcs>0 and the last statement of the last proc was the current one, then this one would get returned again (causing an infinite loop). Problem was pid was getting set to 0, causing search to start over from beginning.

I probably have to fix the same bug in the Urgent version.

Note: See TracTickets for help on using tickets.