Linux-Fan85
Linux-Fan85

Reputation: 37

opp_runall -q runnumbers returned nonzero exit status omnet++

I try to run the simulation from command line with the following command, $ opp_runall -j2 ./inetmanet-3.x-mactest2 -u Cmdenv -c General -r 1 -n ../..:../../../src:../../../tutorials --image-path=../../../images -l ../../../src/INET omnetpp.ini

I get a weird error, which does not make sense to me, any one can help as follows.

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

I using omnetpp RC2 latest release, 1992-2017.

any help?

Upvotes: 1

Views: 368

Answers (1)

koalo
koalo

Reputation: 2313

I stumbled upon the same problem. It is actually a bug/feature in newer versions of OMNeT++, where the signal handling was improved. I just discussed this problem with Attila Török on the mailing list.

This occurs if a signal is registered in an external library during static initialization. Three possible solutions:

  1. Citing Attila: Insert EXECUTE_ON_STARTUP(cComponent::clearSignalState()); into ccomponent.cc, right after the definition of cComponent::signalListenerCount, then rebuilding OMNeT++.

  2. Move your signal registration out of the static initialization phase. This might or might not be possible in your scenario, but avoids modifications of OMNeT++ itself.

  3. Downgrade OMNeT++ and wait until this is fixed upstream. At least 5.0 works.

Upvotes: 3

Related Questions