I am using Windows O.S and in Cygwin i type: wish -f ispin.tcl
to open the ispin interface.
I open a file test.pml
which contains:
byte state = 2;
proctype A()
{ (state == 1) -> state = 3
}
proctype B()
{ state = state - 1
}
init
{ run A(); run B()
}
After that, I run it using the random way with seed = 123. The results are printed in output without problems:
0: proc - (:root:) creates proc 0 (:init:)
Starting A with pid 1
1: proc 0 (:init::1) creates proc 1 (A)
1: proc 0 (:init::1) test.pml:12 (state 1) [(run A())]
Starting B with pid 2
2: proc 0 (:init::1) creates proc 2 (B)
2: proc 0 (:init::1) test.pml:12 (state 2) [(run B())]
3: proc 2 (B:1) test.pml:8 (state 1) [state = (state-1)]
4: proc 1 (A:1) test.pml:4 (state 1) [((state==1))]
4: proc 2 (B:1) terminates
5: proc 1 (A:1) test.pml:4 (state 2) [state = 3]
5: proc 1 (A:1) terminates
5: proc 0 (:init::1) terminates
3 processes created
The problem appears when I try to verify this model. The result of the verification is:
verification result:
spin -a test.pml
gcc -DMEMLIM=1024 -O2 -DXUSAFE -DSAFETY -DNOCLAIM -w -o pan pan.c
./pan -m10000
Pid: 3952
spin: error, the version of spin that generated this pan.c assumed a different wordsize (4 iso 8)
How can I solve this? I searched on the internet but I couldn't find something to help me.
The solution to the above error was to install Cygwin for 32-bit versions of Windows even if my laptop is 64-bit. This is because the executable of spin exists only for Windows 32-bit, so they have to match as I understood.
After the installation of Cygwin (gcc
, cpp
, make
), we move the spin
, ispin
and test
files to the new Cygwin folder (C:\cygwin\
).
When we try to run and verify again the model, without needing any other modifications, we can see the correct output with no errors:
verification result:
spin -a test.promela
gcc -DMEMLIM=1024 -O2 -DXUSAFE -DSAFETY -DNOCLAIM -w -o pan pan.c
./pan -m10000
Pid: 6304
pan:1: assertion violated 0 (at depth 6)
pan: wrote test.promela.trail
(Spin Version 6.4.5 -- 1 January 2016)
Warning: Search not completed
+ Partial Order Reduction
Full statespace search for:
never claim - (not selected)
assertion violations +
cycle checks - (disabled by -DSAFETY)
invalid end states +
State-vector 20 byte, depth reached 6, errors: 1
7 states, stored
0 states, matched
7 transitions (= stored+matched)
0 atomic steps
hash conflicts: 0 (resolved)
Stats on memory usage (in Megabytes):
0.000 equivalent memory usage for states (stored*(State-vector + overhead))
0.292 actual memory usage for states
64.000 memory used for hash table (-w24)
0.343 memory used for DFS stack (-m10000)
64.539 total actual memory usage
pan: elapsed time 0.002 seconds
To replay the error-trail, goto Simulate/Replay and select "Run"