错误是什么:在ispin中感测到未初始化的chan?

时间:2019-04-01 09:09:23

标签: model-checking promela spin

ispin在进度窗口(“模拟”选项卡上的中下部屏幕)上生成此消息: 错误:发送到未初始化的频道

奇怪的是,错误消息开始出现在模拟过程的中间(我将最大步数设置为10000,并且开始出现在6000步左右)。

怎么可能?会在模拟过程中以某种方式失去chan初始化吗?

这是我使用的渠道之一的初始化:

chan VP = [1] of {byte};

这是模拟过程中的错误消息:

enter image description here

1 个答案:

答案 0 :(得分:0)

这是您遇到的错误的 mcve

chan c;

init {
    c!10;
}

产生

~$ spin test.pml 
Error: sending to an uninitialized chan
      timeout
Error: sending to an uninitialized chan
#processes: 1
  0:    proc  0 (:init::1) test.pml:4 (state 1)
1 process created

基本上,您忘记声明通道是同步还是异步,以及它应包含的消息类型。正确的频道声明应如下所示:

chan c = [N] of { type_1, ..., type_M };

其中,对于任何异步通道,N大于或等于1,否则0,而type_1, ..., type_M是类型列表(即一封邮件中包含intbool)个字段。

有关更多详细信息,请访问read the documentation