Search code examples
gccformal-verificationmodel-checkingspinpromela

Spin: error, the version of spin that generated this pan.c assumed a different wordsize (4 iso 8)


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.

Note: I haven't changed any verification property: ispin_interface_verification_properties


Solution

  • 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"