Project

General

Profile

Bug #32

Updated by Vincenzo Cimino 5 months ago

The script `test_polling_hamburg_port.tcl` crashes with the following backtrace 
 ``` 
 Thread 1 "ns" received signal SIGSEGV, Segmentation fault. 
 0x00007e5237425082 in std::_Rb_tree<int, std::pair<int const, DiscoveryData>, std::_Select1st<std::pair<int const, DiscoveryData> >, std::less<int>, std::allocator<std::pair<int const, DiscoveryData> > >::_M_begin() const () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #0    0x00007e5237425082 in std::_Rb_tree<int, std::pair<int const, DiscoveryData>, std::_Select1st<std::pair<int const, DiscoveryData> >, std::less<int>, std::allocator<std::pair<int const, DiscoveryData> > >::_M_begin() const () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #1    0x00007e5237422166 in std::_Rb_tree<int, std::pair<int const, DiscoveryData>, std::_Select1st<std::pair<int const, DiscoveryData> >, std::less<int>, std::allocator<std::pair<int const, DiscoveryData> > >::lower_bound(int const&) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #2    0x00007e5237420851 in std::map<int, DiscoveryData, std::less<int>, std::allocator<std::pair<int const, DiscoveryData> > >::lower_bound(int const&) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #3    0x00007e523741f550 in std::map<int, DiscoveryData, std::less<int>, std::allocator<std::pair<int const, DiscoveryData> > >::operator[](int const&) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #4    0x00007e523741d151 in DiscoveryStorage::addEntry(PlugIn const*, int, int, int, char const*, char const*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #5    0x00007e523741e518 in ClMsgDiscovery::addData(PlugIn const*, int, int, int, char const*, char const*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #6    0x00007e523741a584 in PlugIn::recvSyncClMsg(ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #7    0x00007e523734d7a4 in PositionDB::recvSyncClMsg(ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracleBasicMovement.so 
 #8    0x00007e5237417b57 in ClSAP::sendSynchronousModule(ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #9    0x00007e523742db6d in NodeCore::sendSynchronousClSAP(int, int, ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #10 0x00007e523742e1f0 in NodeCore::synchronousCrLayCommand(ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #11 0x00007e5237417e25 in ClSAP::sendSynchronousClLayer(ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #12 0x00007e523741a85e in PlugIn::sendSyncClMsg(ClMessage*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libMiracle.so 
 #13 0x00007e523369c9cb in UnderwaterPhysical::endRx(Packet*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libuwphysical.so 
 #14 0x00007e52373c329a in MPhyRxTimer::handle(Event*) () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libmphy.so 
 #15 0x00000000005bc8ef in Scheduler::dispatch(Event*, double) () 
 #16 0x00000000005bc7e1 in Scheduler::run() () 
 #17 0x00000000005bca23 in Scheduler::command(int, char const* const*) () 
 #18 0x00000000008080cc in TclClass::dispatch_cmd(void*, Tcl_Interp*, int, char const**) () 
 #19 0x000000000080c7ab in OTclDispatch () 
 #20 0x00007e5237bc54eb in TclInvokeStringCommand () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #21 0x00007e5237bc9370 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #22 0x00007e5237c0f6b4 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #23 0x00007e5237c170e8 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #24 0x00007e5237c0f90a in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #25 0x00007e5237c5348b in TclObjInterpProcCore () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #26 0x00007e5237bc5628 in TclInvokeObjectCommand () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #27 0x000000000080c9fe in OTclDispatch () 
 #28 0x00007e5237bc54eb in TclInvokeStringCommand () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #29 0x00007e5237bc9370 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #30 0x00007e5237c0f6b4 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #31 0x00007e5237c5348b in TclObjInterpProcCore () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #32 0x00007e5237bc5628 in TclInvokeObjectCommand () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #33 0x000000000080c7ab in OTclDispatch () 
 #34 0x00007e5237bc54eb in TclInvokeStringCommand () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #35 0x00007e5237bc9370 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #36 0x00007e5237bcb2d0 in ?? () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #37 0x00007e5237bcbb83 in Tcl_EvalEx () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #38 0x00007e5237c344b7 in Tcl_FSEvalFileEx () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #39 0x00007e5237c3b03b in Tcl_Main () from /DESERT_Underwater/DESERT_buildCopy_LOCAL/lib/libtcl8.5.so 
 #40 0x00000000008070ce in nslibmain () 
 #41 0x000000000080725b in main () 
 ``` 

 The issue seems related with the following lines inside method `UnderwaterPhysical::endRx(Packet*)` method: 
 ``` cpp 
 ClMsgTriggerStats m; 
 sendSyncClMsg(&m); 
 ``` 
 The that triggers some cross layer message doesn't get correctly initialized and its type is equals to 0. messages which in turn are interpreted as discovery messages.

Back