This is an attempt to work around this segfaut on FreeBSD:
==72834== Invalid read of size 1
==72834== at 0x4A09B22: __is_long (include/c++/v1/string:1445)
==72834== by 0x4A09B22: __get_pointer (include/c++/v1/string:1544)
==72834== by 0x4A09B22: data (include/c++/v1/string:1251)
==72834== by 0x4A09B22: operator basic_string_view (include/c++/v1/string:879)
==72834== by 0x4A09B22: compare (include/c++/v1/string:3845)
==72834== by 0x4A09B22: operator<<char, std::__1::char_traits<char>, std::__1::allocator<char> > (include/c++/v1/string:4072)
==72834== by 0x4A09B22: operator()<const std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > &, const std::__1::basic_string<char, std::__1::char_traits< char>, std::__1::allocator<char> > &> (include/c++/v1/__functional/operations.h:499)
==72834== by 0x4A09B22: operator() (include/c++/v1/map:577)
==72834== by 0x4A09B22: std::__1::__tree_node_base<void*>*& std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::intrusive_ptr<simgrid::kernel::resource::DiskImpl> >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__ value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::intrusive_ptr<simgrid::kernel::resource::DiskImpl> >, std::__1::less<void>, true>, st d::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::intrusive_ptr<simgrid::kernel::resource::DiskImpl> > > >::__find_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::basic_strin g<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) (include/c++/v1/__tree:1977)
==72834== by 0x4A091E0: __emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, const std::__1::piecewise_construct_t &, std::__1: :tuple<const std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > &>, std::__1::tuple<> > (include/c++/v1/__tree:2093)
==72834== by 0x4A091E0: std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, boost::intrusive_ptr<simgrid::kernel::resource::DiskImpl>, std ::__1::less<void>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, boost::intrusive_ptr<simgrid::kernel::resou rce::DiskImpl> > > >::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) (include/c++/v1/map:1588)
==72834== by 0x498CD41: UnknownInlinedFun (HostImpl.cpp:240)
==72834== by 0x498CD41: operator() (s4u_Host.cpp:356)
==72834== by 0x498CD41: simcall_answered<(lambda at /builds/workspace/SimGrid/build_mode/Debug/node/freebsd/build/simgrid-3.34.1/src/s4u/s4u_Host.cpp:354:42)> (simix.hpp:49)
==72834== by 0x498CD41: simgrid::s4u::Host::create_disk(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, double, double) (s4u_Host.cpp:354)
==72834== by 0x4AE9A23: simgrid::plugin::Jbod::create_jbod(simgrid::s4u::NetZone*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, double, un signed int, simgrid::plugin::Jbod::RAID, double, double) (jbod.cpp:30)
==72834== by 0x401C2A: main (examples/cpp/plugin-jbod/s4u-plugin-jbod.cpp:43)
==72834== Address 0xffffffff00000023 is not stack'd, malloc'd or (recently) free'd
void HostImpl::add_disk(const s4u::Disk* disk)
{
- disks_[disk->get_name()] = kernel::resource::DiskImplPtr(disk->get_impl());
+ disks_.insert({disk->get_name(), kernel::resource::DiskImplPtr(disk->get_impl())});
}
void HostImpl::remove_disk(const std::string& name)