Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TraCIAPI: segfault when subscribing simulation variables [was: Artery debug mode error] #62

Closed
brianmc95 opened this issue Feb 18, 2019 · 11 comments

Comments

@brianmc95
Copy link

Hello, I have run into a strange issue with running artery in debug mode. It seems that there is some issue with the setup of the scenarios in debug mode which causes an error to occur when running any
debug simulation.

I am running Omnet++ 5.4.1 with SUMO 1.0.1, gdb 7.12-6, running on Debian 9

The following is what I'm running the basic debug example

cmake --build debug --target debug_example

Below is a backtrace of what issue happens when beginning a simulation in debug mode.

(gdb) backtrace
backtrace
#0  0x00007fffec3b1ace in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::_M_begin (this=0x20)
    at /usr/include/c++/6/bits/stl_tree.h:666
#1  0x00007fffec3b5538 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<c---Type <return> to continue, or q <return> to quit---

har> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound (this=0x20, __k="")
    at /usr/include/c++/6/bits/stl_tree.h:1103
#2  0x00007fffec3b200b in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound
    (this=0x20, __x="") at /usr/include/c++/6/bits/stl_map.h:1150
#3  0x00007fffec3b042e in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::operator[] (
    this=0x20, __k="") at /usr/include/c++/6/bits/stl_map.h:479
---Type <return> to continue, or q <return> to quit---

#4  0x00007fffec3a07fb in TraCIAPI::readVariables (this=0x2ccd450, inMsg=..., 
    objectID="", variableCount=4, 
    into=<error reading variable: Cannot access memory at address 0x48>)
    at /home/veins/integration/artery/src/traci/sumo/utils/traci/TraCIAPI.cpp:483
#5  0x00007fffec3a1180 in TraCIAPI::readVariableSubscription (this=0x2ccd450, 
    cmdId=235, inMsg=...)
    at /home/veins/integration/artery/src/traci/sumo/utils/traci/TraCIAPI.cpp:544
#6  0x00007fffec3ae616 in TraCIAPI::TraCIScopeWrapper::subscribe (
    this=0x2ccd9d0, objID="", 
    vars=std::vector of length 4, capacity 4 = {...}, beginTime=-1073741824, 
    endTime=-1073741824)
    at /home/veins/integration/artery/src/traci/sumo/utils/traci/TraCIAPI.cpp:3166
#7  0x00007fffec357f94 in traci::BasicSubscriptionManager::subscribeSimulationVariables (this=0x2ca7440, add_vars=std::set with 4 elements = {...})
    at /home/veins/integration/artery/src/traci/BasicSubscriptionManager.cc:110
#8  0x00007fffec35792d in traci::BasicSubscriptionManager::traciInit (
    this=0x2ca7440)
    at /home/veins/integration/artery/src/traci/BasicSubscriptionManager.cc:50
#9  0x00007fffec368477 in traci::Listener::receiveSignal (this=0x2ca7440, 
    signal=196) at /home/veins/integration/artery/src/traci/Listener.cc:47
---Type <return> to continue, or q <return> to quit---

#10 0x00007ffff6a6eecc in omnetpp::cComponent::fire<omnetpp::SimTime> (
    this=0x2cc94e0, source=0x2cc94e0, signalID=196, x=..., details=0x0)
    at ccomponent.cc:637
#11 0x00007ffff6a6c796 in omnetpp::cComponent::emit (this=0x2cc94e0, 
    signalID=196, t=..., details=0x0) at ccomponent.cc:604
#12 0x00007fffec35ff58 in traci::Core::handleMessage (this=0x2cc94e0, msg=
    0x2cb27c0) at /home/veins/integration/artery/src/traci/Core.cc:68
#13 0x00007ffff6b36298 in omnetpp::cSimulation::doMessageEvent (this=0x6889c0, 
    msg=0x2cb27c0, module=0x2cc94e0) at csimulation.cc:669
#14 0x00007ffff6b35e43 in omnetpp::cSimulation::executeEvent (this=0x6889c0, 
    event=0x2cb27c0) at csimulation.cc:611
#15 0x00007ffff748cd58 in omnetpp::qtenv::Qtenv::doRunSimulation (this=
    0x822070) at qtenv.cc:895
#16 0x00007ffff748c293 in omnetpp::qtenv::Qtenv::runSimulation (this=0x822070, 
    mode=omnetpp::qtenv::RUNMODE_STEP, until_time=..., until_eventnum=0, 
    until_msg=0x0, until_module=0x0, stopOnMsgCancel=true) at qtenv.cc:745
#17 0x00007ffff73f526b in omnetpp::qtenv::MainWindow::runSimulation (this=
    0x28d1e40, runMode=omnetpp::qtenv::RUNMODE_STEP) at mainwindow.cc:496
#18 0x00007ffff74055ca in omnetpp::qtenv::MainWindow::on_actionOneStep_triggered (this=0x28d1e40) at ./mainwindow.h:95
#19 0x00007ffff750f65b in omnetpp::qtenv::MainWindow::qt_static_metacall (
    _o=0x28d1e40, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0x7fffffffca00)
    at moc_mainwindow.cpp:274
---Type <return> to continue, or q <return> to quit---

#20 0x00007ffff750fc55 in omnetpp::qtenv::MainWindow::qt_metacall (
    this=0x28d1e40, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0x7fffffffca00)
    at moc_mainwindow.cpp:370
#21 0x00007ffff48b0a54 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007ffff40f71c2 in QAction::triggered(bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff40f9bb0 in QAction::activate(QAction::ActionEvent) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff41e733d in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff41e7574 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff42b368a in QToolButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff4145118 in QWidget::event(QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff42b3769 in QToolButton::event(QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff40fdb8c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff410620d in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit---

#31 0x00007ffff4884d30 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#32 0x00007ffff41048bd in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff415f626 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff4162003 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff40fdb8c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff4105351 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff4884d30 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007ffff4bceb03 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#39 0x00007ffff4bd0675 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#40 0x00007ffff4bae60b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
---Type <return> to continue, or q <return> to quit---

   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#41 0x00007fffcf8b0360 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#42 0x00007ffff24cd7f7 in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x00007ffff24cda60 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#44 0x00007ffff24cdb0c in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#45 0x00007ffff48d91cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#46 0x00007ffff4882d1a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#47 0x00007ffff488b46c in QCoreApplication::exec() ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#48 0x00007ffff74894b0 in omnetpp::qtenv::Qtenv::doRun (this=0x822070)
    at qtenv.cc:638
#49 0x00007ffff78d948f in omnetpp::envir::EnvirBase::run (this=0x822080)
    at envirbase.cc:742
#50 0x00007ffff78d6527 in omnetpp::envir::EnvirBase::run (this=0x822080, 
    argc=14, argv=0x7fffffffe278, configobject=0x689180) at envirbase.cc:354
#51 0x00007ffff78cd531 in omnetpp::envir::setupUserInterface (argc=14, 
    argv=0x7fffffffe278) at startup.cc:259
#52 0x00007ffff78ce584 in evMain (argc=14, argv=0x7fffffffe278) at evmain.cc:33
---Type <return> to continue, or q <return> to quit---

#53 0x0000000000400762 in main (argc=14, argv=0x7fffffffe278) at main.cc:31

Is there any obvious issue that would cause this, I can't determine what the cause might be, especially as if I run the example in release mode it works normally. This also happens with all other scenarios, and same applies, debug doesn't work, while release does. Any clues, it may be due to my own setup that's causing the issue as well I can't be sure.

@riebl
Copy link
Owner

riebl commented Feb 19, 2019

Hi @brianmc95,

I see no error in your posted stack trace. Which kind of error are you referring to?

@brianmc95
Copy link
Author

Hi @riebl
Sorry wrote this up last night and probably didn't pay enough attention to it.

The error I get a Segmentation Fault the gdb error I get is below

hread 1 "opp_run_dbg" received signal SIGSEGV, Segmentation fault.
0x00007f25ec7ceace in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::_M_begin (this=0x20) at /usr/include/c++/6/bits/stl_tree.h:666
666	      { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }

The error comes from the TraciAPI::readVariables function in TraciAPI.cc to send you a snippet where the error occurs it's below.

while (variableCount > 0) {

        const int variableID = inMsg.readUnsignedByte();
        const int status = inMsg.readUnsignedByte();
        const int type = inMsg.readUnsignedByte();

        if (status == RTYPE_OK) {
            switch (type) {
                case TYPE_DOUBLE:
                    into[objectID][variableID] = std::make_shared<libsumo::TraCIDouble>(inMsg.readDouble()); # <- Specifically this line
                    break;
                case TYPE_STRING:
                    into[objectID][variableID] = std::make_shared<libsumo::TraCIString>(inMsg.readString());
                    break;
                case POSITION_2D: {

There's another stack trace below but might not be terribly useful.

std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::_M_begin stl_tree.h:666
std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound stl_tree.h:1103
std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound stl_map.h:1150
std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::operator[] stl_map.h:479
TraCIAPI::readVariables TraCIAPI.cpp:483
TraCIAPI::readVariableSubscription TraCIAPI.cpp:544
TraCIAPI::TraCIScopeWrapper::subscribe TraCIAPI.cpp:3166
traci::BasicSubscriptionManager::subscribeSimulationVariables BasicSubscriptionManager.cc:110
traci::BasicSubscriptionManager::traciInit BasicSubscriptionManager.cc:50
traci::Listener::receiveSignal Listener.cc:47
omnetpp::cComponent::fire<omnetpp::SimTime> ccomponent.cc:637
omnetpp::cComponent::emit ccomponent.cc:604
traci::Core::handleMessage Core.cc:68
omnetpp::cSimulation::doMessageEvent csimulation.cc:669
omnetpp::cSimulation::executeEvent csimulation.cc:611
omnetpp::qtenv::Qtenv::doRunSimulation qtenv.cc:895
omnetpp::qtenv::Qtenv::runSimulation qtenv.cc:745
omnetpp::qtenv::MainWindow::runSimulation mainwindow.cc:496
omnetpp::qtenv::MainWindow::on_actionRun_triggered mainwindow.h:96
omnetpp::qtenv::MainWindow::qt_static_metacall moc_mainwindow.cpp:275
omnetpp::qtenv::MainWindow::qt_metacall moc_mainwindow.cpp:370
QMetaObject::activate(QObject*, int, int, void**) 0x00007f25f4ccda54
QAction::triggered(bool) 0x00007f25f45141c2
QAction::activate(QAction::ActionEvent) 0x00007f25f4516bb0
<unknown> 0x00007f25f460433d
QAbstractButton::mouseReleaseEvent(QMouseEvent*) 0x00007f25f4604574
QToolButton::mouseReleaseEvent(QMouseEvent*) 0x00007f25f46d068a
QWidget::event(QEvent*) 0x00007f25f4562118
QToolButton::event(QEvent*) 0x00007f25f46d0769
QApplicationPrivate::notify_helper(QObject*, QEvent*) 0x00007f25f451ab8c
QApplication::notify(QObject*, QEvent*) 0x00007f25f452320d
QCoreApplication::notifyInternal2(QObject*, QEvent*) 0x00007f25f4ca1d30
QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) 0x00007f25f45218bd
<unknown> 0x00007f25f457c626
<unknown> 0x00007f25f457f003
QApplicationPrivate::notify_helper(QObject*, QEvent*) 0x00007f25f451ab8c
QApplication::notify(QObject*, QEvent*) 0x00007f25f4522351
QCoreApplication::notifyInternal2(QObject*, QEvent*) 0x00007f25f4ca1d30
QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) 0x00007f25f4febb03
QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) 0x00007f25f4fed675
QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) 0x00007f25f4fcb60b
<unknown> 0x00007f25cfccd360
g_main_context_dispatch 0x00007f25f28ea7f7
<unknown> 0x00007f25f28eaa60
g_main_context_iteration 0x00007f25f28eab0c
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 0x00007f25f4cf61cf
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) 0x00007f25f4c9fd1a
QCoreApplication::exec() 0x00007f25f4ca846c
omnetpp::qtenv::Qtenv::doRun qtenv.cc:638
omnetpp::envir::EnvirBase::run envirbase.cc:742
omnetpp::envir::EnvirBase::run envirbase.cc:354
omnetpp::envir::setupUserInterface startup.cc:259
evMain evmain.cc:33
main main.cc:31
__libc_start_main 0x00007f25f544d2e1
_start 0x000000000040066a

Thanks for getting back to me at the same time much appreciated, let me know if you need me to try running anything else that might be of some help figuring this out.

@riebl
Copy link
Owner

riebl commented Feb 19, 2019

@brianmc95 Please check the updated master branch including a bugfix for BasicSubscriptionManager. I am not sure if this fixes also your problem, but I had this patch in my development branch already.

@brianmc95
Copy link
Author

@riebl Unfortunately after a fresh clone and setup, still the same issue as before.

@riebl
Copy link
Owner

riebl commented Feb 19, 2019

Hm, it's quite hard for me to investigate this issue further because I am not suffering from segmentation faults in debug mode. However, the line you have posted clearly shows an invalid pointer with this=0x20. This is probably caused by passing an invalid into object to TraCIAPI::readVariables.

You may set a breakpoint at TraCIAPI::readVariableSubscription and check if the myDomains[cmdId]->getModifiableSubscriptionResults() part returns a valid object and verify that a valid TraCIScopeWrapper is stored at myDomains[cmdId].

@brianmc95
Copy link
Author

So on looking through it, it appears the myDomains[cmdId]->getModifiableSubscriptionResults() returns nothing which is causing the issue.

@riebl
Copy link
Owner

riebl commented Feb 19, 2019

Actually, all the code under src/traci/sumo including TraCIAPI is directly borrowed from SUMO. Put in different words: If Artery is not misusing the TraCI API then it is quite likely a SUMO bug.

Often the output by Valgrind is also helpful to track down bugs. You can run a scenario with Valgrind via memcheck_<scenario>. Depending on the scenario you may need to select a particular configuration by setting CMake variable RUN_FLAGS for your build directory via cmake-gui to "-c some_scenario_config". For example, memcheck_example with RUN_FLAGS set to "-c inet" will run the inet configuration of scenarios/artery.

Edit: Oops, for memcheck_* targets RUN_FLAGS is ignored. Put the configuration selection into VALGRIND_EXEC_FLAGS in this case.

@brianmc95
Copy link
Author

brianmc95 commented Feb 19, 2019

Ah I hadn't thought that it was a sumo issue but you are probably right, in which case apologies for putting it in your repo.

But thanks for letting me know how to run Valgrind and for all the help, I really appreciate it.

I'll attach the output of the valgrind run below in case it's of interest, don't feel obliged to go through it.

==18669== 
OMNeT++ Discrete Event Simulation  (C) 1992-2018 Andras Varga, OpenSim Ltd.
Version: 5.4.1, build: 180629-5e28390, edition: Academic Public License -- NOT FOR COMMERCIAL USE
See the license for distribution terms and warranty disclaimer

Setting up Cmdenv...

Loading NED files from /home/veins/artery/src/artery:  77
Loading NED files from /home/veins/artery/src/traci:  16
Loading NED files from /home/veins/artery/extern/veins/examples/veins:  1
Loading NED files from /home/veins/artery/extern/veins/src/veins:  38
Loading NED files from /home/veins/artery/extern/inet/src:  666
Loading NED files from /home/veins/artery/extern/inet/examples:  174
Loading NED files from /home/veins/artery/extern/inet/tutorials:  19
Loading NED files from /home/veins/artery/extern/inet/showcases:  33

Preparing for running configuration veins, run #0...
Assigned runID=veins-0-20190219-15:26:32-18669
Setting up network "artery.veins.World"...
==18669== Use of uninitialised value of size 8
==18669==    at 0x10BE0016: std::pair<int const, TraCIAPI::TraCIScopeWrapper*>::pair<int&&, 0ul>(std::tuple<int&&>&, std::tuple<>&, std::_Index_tuple<0ul>, std::_Index_tuple<>) (tuple:1590)
==18669==    by 0x10BDEEDA: std::pair<int const, TraCIAPI::TraCIScopeWrapper*>::pair<int&&>(std::piecewise_construct_t, std::tuple<int&&>, std::tuple<>) (tuple:1579)
==18669==    by 0x10BDD5D3: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > >::construct<std::pair<int const, TraCIAPI::TraCIScopeWrapper*>, std::piecewise_construct_t const&, std::tuple<int&&>, std::tuple<> >(std::pair<int const, TraCIAPI::TraCIScopeWrapper*>*, std::piecewise_construct_t const&, std::tuple<int&&>&&, std::tuple<>&&) (new_allocator.h:120)
==18669==    by 0x10BDBB4D: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > > >::construct<std::pair<int const, TraCIAPI::TraCIScopeWrapper*>, std::piecewise_construct_t const&, std::tuple<int&&>, std::tuple<> >(std::allocator<std::_Rb_tree_node<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > >&, std::pair<int const, TraCIAPI::TraCIScopeWrapper*>*, std::piecewise_construct_t const&, std::tuple<int&&>&&, std::tuple<>&&) (alloc_traits.h:475)
==18669==    by 0x10BD8D58: void std::_Rb_tree<int, std::pair<int const, TraCIAPI::TraCIScopeWrapper*>, std::_Select1st<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> >, std::less<int>, std::allocator<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > >::_M_construct_node<std::piecewise_construct_t const&, std::tuple<int&&>, std::tuple<> >(std::_Rb_tree_node<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> >*, std::piecewise_construct_t const&, std::tuple<int&&>&&, std::tuple<>&&) (stl_tree.h:543)
==18669==    by 0x10BD449B: std::_Rb_tree_node<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> >* std::_Rb_tree<int, std::pair<int const, TraCIAPI::TraCIScopeWrapper*>, std::_Select1st<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> >, std::less<int>, std::allocator<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<int&&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<int&&>&&, std::tuple<>&&) (stl_tree.h:560)
==18669==    by 0x10BD126B: std::_Rb_tree_iterator<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > std::_Rb_tree<int, std::pair<int const, TraCIAPI::TraCIScopeWrapper*>, std::_Select1st<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> >, std::less<int>, std::allocator<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<int&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> >, std::piecewise_construct_t const&, std::tuple<int&&>&&, std::tuple<>&&) (stl_tree.h:2196)
==18669==    by 0x10BCF798: std::map<int, TraCIAPI::TraCIScopeWrapper*, std::less<int>, std::allocator<std::pair<int const, TraCIAPI::TraCIScopeWrapper*> > >::operator[](int&&) (stl_map.h:502)
==18669==    by 0x10BBC5D5: TraCIAPI::TraCIAPI() (TraCIAPI.cpp:48)
==18669==    by 0x10B7F7E9: traci::API::API() (API.h:17)
==18669==    by 0x10B7E4E8: traci::Core::Core() (Core.cc:23)
==18669==    by 0x10B7E383: __factoryfunc_8() (Core.cc:8)
==18669==  Uninitialised value was created by a stack allocation
==18669==    at 0x10B60780: ??? (in /home/veins/artery/debug/src/traci/libtraci.so)
==18669== 
Initializing...

Running simulation...
** Event #0   t=0   Elapsed: 0.006778s (0m 00s)  0% completed  (0% total)
     Speed:     ev/sec=0   simsec/sec=0   ev/simsec=0
     Messages:  created: 2   present: 2   in FES: 2
Loading configuration... done.
==18669== Invalid read of size 8
==18669==    at 0x10BD1012: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::_M_begin() (stl_tree.h:666)
==18669==    by 0x10BD4B83: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (stl_tree.h:1103)
==18669==    by 0x10BD154E: std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (stl_map.h:1150)
==18669==    by 0x10BCF897: std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (stl_map.h:479)
==18669==    by 0x10BBF538: TraCIAPI::readVariables(tcpip::Storage&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >&) (TraCIAPI.cpp:486)
==18669==    by 0x10BBFEBD: TraCIAPI::readVariableSubscription(int, tcpip::Storage&) (TraCIAPI.cpp:547)
==18669==    by 0x10BCDB8D: TraCIAPI::TraCIScopeWrapper::subscribe(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<int, std::allocator<int> > const&, double, double) const (TraCIAPI.cpp:3265)
==18669==    by 0x10B76B67: traci::BasicSubscriptionManager::subscribeSimulationVariables(std::set<int, std::less<int>, std::allocator<int> > const&) (BasicSubscriptionManager.cc:110)
==18669==    by 0x10B764DC: traci::BasicSubscriptionManager::traciInit() (BasicSubscriptionManager.cc:50)
==18669==    by 0x10B8704A: traci::Listener::receiveSignal(omnetpp::cComponent*, int, omnetpp::SimTime const&, omnetpp::cObject*) (Listener.cc:47)
==18669==    by 0x5F01ECB: void omnetpp::cComponent::fire<omnetpp::SimTime>(omnetpp::cComponent*, int, omnetpp::SimTime, omnetpp::cObject*) (ccomponent.cc:637)
==18669==    by 0x5EFF795: omnetpp::cComponent::emit(int, omnetpp::SimTime const&, omnetpp::cObject*) (ccomponent.cc:604)
==18669==  Address 0x30 is not stack'd, malloc'd or (recently) free'd
==18669== 
==18669== 
==18669== Process terminating with default action of signal 11 (SIGSEGV)
==18669==  Access not within mapped region at address 0x30
==18669==    at 0x10BD1012: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::_M_begin() (stl_tree.h:666)
==18669==    by 0x10BD4B83: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (stl_tree.h:1103)
==18669==    by 0x10BD154E: std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (stl_map.h:1150)
==18669==    by 0x10BCF897: std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (stl_map.h:479)
==18669==    by 0x10BBF538: TraCIAPI::readVariables(tcpip::Storage&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::map<int, std::shared_ptr<libsumo::TraCIResult>, std::less<int>, std::allocator<std::pair<int const, std::shared_ptr<libsumo::TraCIResult> > > > > > >&) (TraCIAPI.cpp:486)
==18669==    by 0x10BBFEBD: TraCIAPI::readVariableSubscription(int, tcpip::Storage&) (TraCIAPI.cpp:547)
==18669==    by 0x10BCDB8D: TraCIAPI::TraCIScopeWrapper::subscribe(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<int, std::allocator<int> > const&, double, double) const (TraCIAPI.cpp:3265)
==18669==    by 0x10B76B67: traci::BasicSubscriptionManager::subscribeSimulationVariables(std::set<int, std::less<int>, std::allocator<int> > const&) (BasicSubscriptionManager.cc:110)
==18669==    by 0x10B764DC: traci::BasicSubscriptionManager::traciInit() (BasicSubscriptionManager.cc:50)
==18669==    by 0x10B8704A: traci::Listener::receiveSignal(omnetpp::cComponent*, int, omnetpp::SimTime const&, omnetpp::cObject*) (Listener.cc:47)
==18669==    by 0x5F01ECB: void omnetpp::cComponent::fire<omnetpp::SimTime>(omnetpp::cComponent*, int, omnetpp::SimTime, omnetpp::cObject*) (ccomponent.cc:637)
==18669==    by 0x5EFF795: omnetpp::cComponent::emit(int, omnetpp::SimTime const&, omnetpp::cObject*) (ccomponent.cc:604)
==18669==  If you believe this happened as a result of a stack
==18669==  overflow in your program's main thread (unlikely but
==18669==  possible), you can try to increase the size of the
==18669==  main thread stack using the --main-stacksize= flag.
==18669==  The main thread stack size used in this run was 8388608.
==18669== 
==18669== HEAP SUMMARY:
==18669==     in use at exit: 22,473,087 bytes in 192,977 blocks
==18669==   total heap usage: 361,707 allocs, 168,730 frees, 104,290,194 bytes allocated
==18669== 
==18669== LEAK SUMMARY:
==18669==    definitely lost: 0 bytes in 0 blocks
==18669==    indirectly lost: 0 bytes in 0 blocks
==18669==      possibly lost: 0 bytes in 0 blocks
==18669==    still reachable: 22,473,087 bytes in 192,977 blocks
==18669==                       of which reachable via heuristic:
==18669==                         newarray           : 1,616 bytes in 20 blocks
==18669==                         multipleinheritance: 432 bytes in 1 blocks
==18669==         suppressed: 0 bytes in 0 blocks
==18669== Rerun with --leak-check=full to see details of leaked memory
==18669== 
==18669== For counts of detected and suppressed errors, rerun with: -v
==18669== ERROR SUMMARY: 15 errors from 2 contexts (suppressed: 0 from 0)
Segmentation fault
scenarios/artery/CMakeFiles/memcheck_example.dir/build.make:57: recipe for target 'scenarios/artery/CMakeFiles/memcheck_example' failed
make[3]: *** [scenarios/artery/CMakeFiles/memcheck_example] Error 139
CMakeFiles/Makefile2:807: recipe for target 'scenarios/artery/CMakeFiles/memcheck_example.dir/all' failed
make[2]: *** [scenarios/artery/CMakeFiles/memcheck_example.dir/all] Error 2
CMakeFiles/Makefile2:814: recipe for target 'scenarios/artery/CMakeFiles/memcheck_example.dir/rule' failed
make[1]: *** [scenarios/artery/CMakeFiles/memcheck_example.dir/rule] Error 2
Makefile:337: recipe for target 'memcheck_example' failed
make: *** [memcheck_example] Error 2
zsh: exit 2     cmake --build debug --target memcheck_example

I realise there's a newer version of sumo available, 1.1.0 while I'm on 1.0.1 I may just upgrade to that and see if the issue persists and possibly try one of the older versions as well. I'll update this issue with anything I find out just in case someone else stumbles across this. If as I feel it is a SUMO issue and it persists in 1.1.0 I'll raise the issue there and link to it from here. Thanks so much for the help again, I'll close this issue once I have gone through the above and confirmed it's SUMO.

@brianmc95
Copy link
Author

Minor update, tried again with all available version 1 sumo setups so SUMO 1.1.0, 1.0.1, 1.0.0 problem persists in all cases unfortunately, but will investigate at a later point and see what might be the root cause.

@riebl
Copy link
Owner

riebl commented Mar 11, 2019

@brianmc95 Any update on this issue?

@riebl riebl changed the title Artery debug mode error TraCIAPI: segfault when subscribing simulation variables [was: Artery debug mode error] Mar 11, 2019
@brianmc95
Copy link
Author

I ended up sidetracked with other issues.

But I spent some time in the last 2 days and did a full new setup of OMNeT++ / SUMO / artery on Ubuntu (I had it running on a debian VM). But on some initial runs I can see that it's now working, so it must have been some sort of issue with Debian that was causing it. Going to close the issue as I don't think it's worth investigating the cause on Debian.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants