Почему я получаю код ошибки 139 при запуске этого кода?

Я хотел бы знать, почему я могу создать этот проект, но как только RSU получает сообщение, я получаю сообщение об ошибке 139. Даже если я попытаюсь решить, удалив код, вставленный в функцию onData, и снова запустил проект, все равно не Работа.

TraCIDemoRSU11p.h

TraCIScenarioManager* manager;
TraCICommandInterface* traci;

TraCIDemoRSU11p.cc

void TraCIDemoRSU11p::initialize(int stage) 
{
    BaseWaveApplLayer::initialize(stage);
    if (stage == 0) {
        manager = TraCIScenarioManagerAccess().get();
        traci = manager->getCommandInterface();
        traci->trafficlight("0").setProgram("tram_is_not_passing");
    }
}


void TraCIDemoRSU11p::onData(WaveShortMessage* wsm) 
{
    traci->trafficlight("0").setProgram("tram_is_passing");
}

версия veins - 4.4, а версия omnet ++ - 5. Я думаю, проблема может заключаться в том, как я получил интерфейс traci в функции инициализации, может ли кто-нибудь объяснить, как два модуля используют интерфейс traci одновременно?

Редактировать:

По запросу я добавляю дополнительную информацию к вопросу.

Cross.net.xml

....
<tlLogic id="0" type="static" programID="1" offset="0">
    <phase duration="500" state="rGrG"/>
</tlLogic>
....

Cross.tls.xml

<tls>  
    <tlLogic id="0" type="static" programID="tram_is_passing" offset="0">
        <phase duration="4" state="ryry"/>
        <phase duration="20" state="GrGr"/>
    </tlLogic>

    <tlLogic id="0" type="static" programID="tram_is_not_passing" offset="0">
        <phase duration="999" state="rGrG"/>
    </tlLogic>
</tls>

person pb772    schedule 09.03.2017    source источник
comment
Можете ли вы предоставить используемую сеть для моделирования? Если вы запустите это с примером Veins по умолчанию, он немедленно выйдет из строя, потому что нет светофора с идентификатором 0.   -  person floxyz    schedule 09.03.2017
comment
Спасибо за предложение, обновил свой вопрос   -  person pb772    schedule 09.03.2017
comment
Могу я попросить вас еще об одном: либо предоставить полностью работающий пример, либо, по крайней мере, предоставить полный журнал ошибок / трассировку стека при работе в режиме отладки.   -  person floxyz    schedule 09.03.2017
comment
Как я могу предоставить полностью работающий пример? Объединено так много файлов, что заставляет программу работать. Я попытаюсь запустить режим отладки, когда у меня будет доступ к компьютеру, на котором установлена ​​программа.   -  person pb772    schedule 09.03.2017


Ответы (1)


Насколько мне известно, OMNeT ++ начинается со 128 со своими кодами ошибок, а затем добавляет обычные коды системных ошибок. Это означает, что 139 = 128 + 11 и 11 - это код ошибки для ошибки сегментации.

Следовательно, похоже, вы пытаетесь использовать пространство памяти, которое не выделено или вам не разрешено использовать. Вы должны запустить симуляцию с Valgrind, используя ./memcheck, чтобы узнать, есть ли у вас утечки памяти.

РЕДАКТИРОВАТЬ: после версии Veins 4.7.1 был добавлен новый сценарий запуска . Теперь вы можете запустить симуляцию с Valgrind, используя ./run -t memcheck.

person Julian Heinovski    schedule 09.03.2017
comment
Да, я провел симуляцию с использованием valgrind, и проблема в том, как я пытаюсь обрабатывать traci одновременно с этим в TraCIDemo11p.cc. Вы хоть представляете, как я могу обрабатывать traci в RSU? - person pb772; 10.03.2017
comment
Прежде всего, опубликуйте последние 2 блока выходного файла valgrind, которые являются сводкой и блоком с наибольшим количеством утечек памяти. Затем попробуйте добавить утверждение после назначения переменных для менеджера и интерфейса, чтобы убедиться, что ссылки действительны и вы действительно можете вызывать для них методы. - person Julian Heinovski; 10.03.2017
comment
Спасибо за беспокойство, это было решено путем удаления не только командной строки set светофора, но и когда я пытаюсь обработать traci. traci = manager->getCommandInterface();. К сожалению, журнал valgrind слишком сложен для понимания, с его помощью невозможно получить ценную информацию. - person pb772; 14.03.2017