vsomeip icon indicating copy to clipboard operation
vsomeip copied to clipboard

[BUG]: possible double free on app_->stop()

Open mogar opened this issue 1 year ago • 0 comments

vSomeip Version

v3.4.10

Boost Version

1.68

Environment

Yocto 3.1 on ARM Cortex M78AE

Describe the bug

I have a double free in my someip application. It occurs on shutdown, and seems to be from within vsomeip itself.

This may be related to the fact that I'm connecting to multiple (4) identical someip devices. Each device has a distinct instance ID, but offers the same services/events. My vsomeip host subscribes to multiple events from each device. Each device subscribes to one event offered by my service.

Reproduction Steps

I haven't managed to create minimal reproduction steps yet.

In my application, shutting down the app by calling app_->stop() will usually (but not always) lead to a double free.

Expected behaviour

No double frees on shutdown.

Logs and Screenshots

coredump:

#0  0x0000ffffb41cb81c in raise () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#1  0x0000ffffb41b8dd4 in abort () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#2  0x0000ffffb4203d34 in ?? () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#3  0x0000ffffb420b2bc in ?? () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#4  0x0000ffffb420cbdc in ?? () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#5  0x0000aaaab5737fac in std::_Rb_tree<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool>, std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> >, std::_Select1st<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > >, std::less<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> >, std::allocator<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > > >::_M_erase(std::_Rb_tree_node<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > >*) ()
#6  0x0000aaaab5737f88 in std::_Rb_tree<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool>, std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> >, std::_Select1st<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > >, std::less<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> >, std::allocator<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > > >::_M_erase(std::_Rb_tree_node<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > >*) ()
#7  0x0000aaaab5737f88 in std::_Rb_tree<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool>, std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> >, std::_Select1st<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > >, std::less<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> >, std::allocator<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > > >::_M_erase(std::_Rb_tree_node<std::pair<std::tuple<unsigned short, unsigned short, boost::asio::ip::address, unsigned short, bool> const, std::shared_ptr<vsomeip_v3::endpoint_definition> > >*) ()
#8  0x0000ffffb41cdc48 in ?? () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#9  0x0000ffffb41cdddc in exit () from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#10 0x0000ffffb41b9128 in __libc_start_main ()
   from /home/mogar/external/yocto_aarch64_gcc_sysroot_x86_64/lib/libc.so.6
#11 0x0000aaaab565e518 in _start () at ../sysdeps/aarch64/start.S:94

mogar avatar Jul 09 '24 20:07 mogar