Concurrency 错误:VECTORSZ太小

Concurrency 错误:VECTORSZ太小,concurrency,formal-verification,model-checking,promela,spin,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: Se

我不熟悉与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,试图通过检查trail文件来确定问题的原因。我使用了这个命令:

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”过程中失败。untitle.pml中的相关代码如下:

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

  do  // This is line 173
    :: (count < 2 * N + 1) ->
init{
整数计数=0;
int序数=N;
这是173行
:(计数<2*N+1)->
在这一点上,我不知道是什么导致了问题,因为对我来说,“do”语句应该执行得很好


有谁能帮助我理解自旋输出,以便我在验证过程中消除此错误?该模型确实生成了正确的输出以供参考。

您可以忽略
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
不起作用,请尝试更多(越来越大)的值。

非常感谢!这非常有效!我不得不将其增加几个数量级,但最终成功:)