Skip to content

Fix segfault in SWATCH v1.6.0

Tom Williams requested to merge fix-segfault into master

When SWATCH v1.6.1 was tested at Point 5 - by running the run control FSM for calo layer 2 on a test VM - the cell crashed due to a segfault. Stacktrace:

#0  0x00007fc3c2d64a64 in boost::multi_index::multi_index_container<swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >::header (this=0x8)
    at /opt/cactus/include/boost/multi_index_container.hpp:525
#1  0x00007fc3c2d6232c in boost::multi_index::detail::index_base<swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >::final_header (this=0x18)
    at /opt/cactus/include/boost/multi_index/detail/index_base.hpp:214
#2  0x00007fc3c2d5fae4 in boost::multi_index::detail::ordered_index_impl<boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, std::less<std::string>, boost::multi_index::detail::nth_layer<1, swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >, boost::mpl::v_item<swatch::mp7::ChannelDescriptorCollection::byId, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::ordered_unique_tag, boost::multi_index::detail::null_augment_policy>::header (
    this=0x18) at /opt/cactus/include/boost/multi_index/detail/ord_index_impl.hpp:987
#3  0x00007fc3c2d67c57 in boost::multi_index::detail::ordered_index_impl<boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, std::less<std::string>, boost::multi_index::detail::nth_layer<1, swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >, boost::mpl::v_item<swatch::mp7::ChannelDescriptorCollection::byId, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::ordered_unique_tag, boost::multi_index::detail::null_augment_policy>::link_point (
    this=0x18, k=..., inf=...) at /opt/cactus/include/boost/multi_index/detail/ord_index_impl.hpp:1014
#4  0x00007fc3c2d6651e in boost::multi_index::detail::ordered_index_impl<boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, std::less<std::string>, boost::multi_index::detail::nth_layer<1, swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >, boost::mpl::v_item<swatch::mp7::ChannelDescriptorCollection::byId, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::ordered_unique_tag, boost::multi_index::detail::null_augment_policy>::insert_<boost::multi_index::detail::lvalue_tag> (this=0x18, v=..., x=@0x7fc41d6bfeb8: 0x0, variant=...) at /opt/cactus/include/boost/multi_index/detail/ord_index_impl.hpp:712
#5  0x00007fc3c2d6499d in boost::multi_index::multi_index_container<swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >::insert_<boost::multi_index::detail::lvalue_tag> (this=0x8, v=..., variant=...) at /opt/cactus/include/boost/multi_index_container.hpp:558
#6  0x00007fc3c2d621e3 in boost::multi_index::multi_index_container<swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >::insert_ (this=0x8, v=...)
    at /opt/cactus/include/boost/multi_index_container.hpp:570
#7  0x00007fc3c2d5f972 in boost::multi_index::detail::index_base<swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >::final_insert_ (this=0x18, x=...)
    at /opt/cactus/include/boost/multi_index/detail/index_base.hpp:221
#8  0x00007fc3c2d5db5d in boost::multi_index::detail::ordered_index_impl<boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, std::less<std::string>, boost::multi_index::detail::nth_layer<1, swatch::mp7::ChannelDescriptor, boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byId, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, std::string, &swatch::mp7::ChannelDescriptor::mId>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<swatch::mp7::ChannelDescriptorCollection::byChannel, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::member<swatch::mp7::ChannelDescriptor, unsigned int, &swatch::mp7::ChannelDescriptor::mChannelId>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<swatch::mp7::ChannelDescriptor> >, boost::mpl::v_item<swatch::mp7::ChannelDescriptorCollection::byId, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::ordered_unique_tag, boost::multi_index::detail::null_augment_policy>::insert (
    this=0x18, x=...) at /opt/cactus/include/boost/multi_index/detail/ord_index_impl.hpp:295
#9  0x00007fc3c2d5aab7 in swatch::mp7::ChannelDescriptorCollection::insert (this=0x0, aDescriptor=...)
    at /usr/src/debug/cactuscore-swatch-mp7-1.6.1/src/common/ChannelDescriptorCollection.cpp:47
#10 0x00007fc3c2d6e9dd in swatch::mp7::MP7Processor::buildPorts (this=0x7fc3a004ed00, aStub=...) at /usr/src/debug/cactuscore-swatch-mp7-1.6.1/src/common/MP7Processor.cpp:203
#11 0x00007fc3c2d6e22a in swatch::mp7::MP7Processor::MP7Processor (this=0x7fc3a004ed00, aStub=...) at /usr/src/debug/cactuscore-swatch-mp7-1.6.1/src/common/MP7Processor.cpp:134
#12 0x00007fc3c29ed96b in calol2::MainProcessor::MainProcessor (this=0x7fc3a004ed00, aStub=...)
    at /usr/src/debug/cactusprojects-calol2-swatch-2.0.0/src/common/MainProcessor.cc:27
#13 0x00007fc3c29f0dd7 in swatch::core::AbstractFactory<swatch::core::Object>::BasicCreator<calol2::MainProcessor>::operator() (this=0x923d720, aStub=...)
    at /opt/cactus/include/swatch/core/AbstractFactory.hxx:71
#14 0x00007fc3c32ff050 in swatch::core::AbstractFactory<swatch::core::Object>::make<swatch::processor::Processor> (this=0x1fbc2c0, aCreatorId="calol2::MainProcessor", aStub=...)
    at /usr/src/debug/core/include/swatch/core/AbstractFactory.hxx:53
#15 0x00007fc3c32fb346 in swatch::system::System::addProcessors (this=0x7fc3a004b1b0) at /usr/src/debug/cactuscore-swatch-system-1.6.1/src/common/System.cpp:283
#16 0x00007fc3c32f958a in swatch::system::System::System (this=0x7fc3a004b1b0, aStub=...) at /usr/src/debug/cactuscore-swatch-system-1.6.1/src/common/System.cpp:94

Looking at the changes from !63 (merged), I realised that after that MP7AbstractProcessor::mRxDescriptors and MP7AbstractProcessor::mTxDescriptors aren't correctly initialised anymore (since moving to smart pointers) - that's fixed in this branch.

Edited by Tom Williams

Merge request reports