opp_runall -q runnumbers返回非零退出状态omnet ++

时间:2017-03-27 17:59:42

标签: command-line omnet++

我尝试使用以下命令从命令行运行模拟, $ opp_runall -j2 ./inetmanet-3.x-mactest2 -u Cmdenv -c General -r 1 -n ../..:../../../src:../../../tutorials --image-path=../../../images -l ../../../src/INET omnetpp.ini

我得到一个奇怪的错误,这对我来说没有意义,任何人都可以提供如下帮助。

what(): ASSERT: Condition '(int)signalListenerCount.size() == lastSignalID+1' does not hold in function registerSignal, ccomponent.cc line 414 opp_runall: ./inetmanet-3.x-mactest2 [...] -q runnumbers returned nonzero exit status

我使用omnetpp RC2最新版本,1992-2017。

任何帮助?

1 个答案:

答案 0 :(得分:3)

我偶然发现了同样的问题。它实际上是OMNeT ++的新版本中的一个错误/功能,其中信号处理得到了改进。我刚刚在邮件列表上与AttilaTörök讨论过这个问题。

如果在静态初始化期间在外部库中注册了信号,则会发生这种情况。三种可能的解决方案:

  1. 引用阿提拉: 在EXECUTE_ON_STARTUP(cComponent::clearSignalState());的定义之后立即将ccomponent.cc插入cComponent::signalListenerCount,然后重建OMNeT ++。

  2. 将信号注册移出静态初始化阶段。在您的方案中可能会或可能不会这样,但避免修改OMNeT ++本身。

  3. 降级OMNeT ++并等到上游修复。至少有5.0个作品。