Wrong error trace and "cannot generate trace" problem
Bug #778310 reported by
Jiri Srba
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
TAPAAL |
Invalid
|
Critical
|
Unassigned |
Bug Description
Open the attached net; the two problems are described there:
1. Tapaal generates a trace that is not executable in the simulator with last=0
2. Tapaal says trace cannot be generated but there is no trace with last=7
Related branches
Changed in tapaal: | |
status: | New → Triaged |
Changed in tapaal: | |
milestone: | 2.1 → none |
To post a comment you must log in.
I think the wrong trace generated when last=0 is a problem in UPPAAL. UPPAAL returns the same trace to trace for all translations. As far as i can tell TAPAAL parses and interprets the UPPAAL trace correctly.
Here is the UPPAAL trace returned for Optimized Standard Reduction (note that there is no delay between firing T0 and T1 even though there should be a small delay). I've added some comments to the trace to make it easier to see where the problem is:
/////// /////// /////// // Initialize /////// /////// /////// /////// /////// //////
State:
( Control._a48 Lock.P_lock Token(1)._BOTTOM_ Token(2)._BOTTOM_ Token(3)._BOTTOM_ Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=0 Token(2).x=0 Token(3).x=0 Token(4).x=0 Token(5).x=0 lock=0
Transitions: _a48->Control. _a49 { 1, c0!, 1 } 1)._BOTTOM_ ->Token( 1).P0 { 1, c0?, 1 }
Control.
Token(
State:
( Control._a49 Lock.P_lock Token(1).P0 Token(2)._BOTTOM_ Token(3)._BOTTOM_ Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=0 Token(2).x=0 Token(3).x=0 Token(4).x=0 Token(5).x=0 lock=0
Transitions: _a49->Control. finish { 1, c1!, 1 } 2)._BOTTOM_ ->Token( 2).P7 { 1, c1?, 1 }
Control.
Token(
State:
( Control.finish Lock.P_lock Token(1).P0 Token(2).P7 Token(3)._BOTTOM_ Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=0 Token(2).x=0 Token(3).x=0 Token(4).x=0 Token(5).x=0 lock=0
/////// /////// /////// // Delay 3.5 /////// /////// /////// /////// /////// //////
Delay: 3.5
State:
( Control.finish Lock.P_lock Token(1).P0 Token(2).P7 Token(3)._BOTTOM_ Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=3.5 Token(1).x=3.5 Token(2).x=3.5 Token(3).x=3.5 Token(4).x=3.5 Token(5).x=3.5 lock=0
/////// /////// /////// // Fire T0 /////// /////// /////// /////// /////// ////// P_lock. P_T0_1_ in { 1, T0_1_in!, x := 0 } 3)._BOTTOM_ ->Token( 3).P_hp_ T0_1 { 1, T0_1_in?, x := 0 }ck->L
Transitions:
Lock.
Token(
State:
( Control.finish Lock.P_T0_1_in Token(1).P0 Token(2).P7 Token(3).P_hp_T0_1 Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=3.5 Token(2).x=3.5 Token(3).x=0 Token(4).x=3.5 Token(5).x=3.5 lock=0
Transitions: P_T0_1_ in->Lock. P_T0_2_ in { 1, T0_2_in!, x := 0 } 1).P0-> Token(1) .P_hp_T0_ 2 { x >= 3 && x < 4, T0_2_in?, 1 }
Lock.
Token(
State:
( Control.finish Lock.P_T0_2_in Token(1).P_hp_T0_2 Token(2).P7 Token(3).P_hp_T0_1 Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=3.5 Token(2).x=3.5 Token(3).x=0 Token(4).x=3.5 Token(5).x=3.5 lock=0
Transitions: P_T0_2_ in->Lock. P_T0_2_ out { 1, T0_3!, x := 0 } 2).P7-> Token(2) .P6 { x > 3 && x <= 4, T0_3?, 1 }
Lock.
Token(
State:
( Control.finish Lock.P_T0_2_out Token(1).P_hp_T0_2 Token(2).P6 Token(3).P_hp_T0_1 Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=3.5 Token(2).x=3.5 Token(3).x=0 Token(4).x=3.5 Token(5).x=3.5 lock=0
Transitions: P_T0_2_ out->Lock. P_T0_1_ out { 1, T0_2_out!, x := 0 } 1).P_hp_ T0_2->Token( 1).P1 { 1, T0_2_out?, 1 }
Lock.
Token(
State:
( Control.finish Lock.P_T0_1_out Token(1).P1 Token(2).P6 Token(3).P_hp_T0_1 Token(4)._BOTTOM_ Token(5)._BOTTOM_ )
Lock.x=0 Token(1).x=3.5 Token(2).x=3.5 Token(3).x=0 Token(4).x=3.5 Token(5).x=3.5 lock=0
Transitions: P_T0_1_ out->Lock. P_lock { 1, T0_1_out!, x := 0 }
Lock.
Token(3).P_hp_...