错误:VECTORSZ太小

时间:2017-11-22 23:28:45

标签: concurrency formal-verification model-checking promela spin

我不熟悉Promela,特别是SPIN。我有一个模型,我正在尝试验证,无法理解SPIN的输出来解决问题。

这是我做的:

spin -a untitled.pml
gcc -o pan pan.c
./pan

输出如下:

pan:1: VECTORSZ is too small, edit pan.h (at depth 0)
pan: wrote untitled.pml.trail

(Spin Version 6.4.5 -- 1 January 2016)
Warning: Search not completed
+ Partial Order Reduction

Full statespace search for:
  never claim           - (none specified)
  assertion violations  +
  acceptance   cycles   - (not selected)
  invalid end states    +

State-vector 8172 byte, depth reached 0, errors: 1
    0 states, stored
    0 states, matched
    0 transitions (= stored+matched)
    0 atomic steps
hash conflicts:         0 (resolved)

然后我再次运行SPIN以尝试通过检查跟踪文件来确定问题的原因。我用了这个命令:

spin -t -v -p untitled.pml

这是结果:

using statement merging
spin: trail ends after -4 steps
#processes: 1
( global variable dump omitted )
-4: proc  0 (:init::1) untitled.pml:173 (state 1)
1 process created

根据此输出(据我所知),验证在" init"期间失败。程序。 untitled.pml中的相关代码是:

init {
  int count = 0;
  int ordinal = N;

  do  // This is line 173
    :: (count < 2 * N + 1) ->

此时我不知道是什么原因引起了这个问题,因为对我来说,&#34;做&#34;声明应该执行得很好。

任何人都可以帮助我理解SPIN输出,以便在验证过程中删除此错误吗?该模型确实产生了正确的输出以供参考。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以简单地忽略trail文件,它根本不相关。

错误消息

pan:1: VECTORSZ is too small, edit pan.h (at depth 0)

告诉您指令VECTORSZ的大小太小,无法成功验证您的模型。

默认情况下,VECTORSZ的尺寸为1024

要解决此问题,请尝试使用较大的VECTORSZ尺寸编译验证程序:

spin -a untitled.pml
gcc -DVECTORSZ=2048 -o run pan.c
./run

如果2048也不起作用,请尝试更多(越来越大)的值。