Open s-hall opened 11 months ago
@iuhilnehc-ynos @Barry-Xu-2018 can you check this if you have bandwidth? it is not unlikely that application uses gstreamer plugin with ROS 2.
I can reproduce this issue followed by https://github.com/ros2/rclpy/issues/1149#issue-1837424580, but this issue can't happen on rmw_cyclonedds_cpp
.
After installing the debug symbols packages, got the backtrace at the point of Segmentation fault
by running the gst_rclpy.py
below,
(gdb) bt
#0 0x00007ffff6702580 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#1 0x00007ffff670273f in __gcc_personality_v0 () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#2 0x00007ffff4d0bfe9 in __libunwind_Unwind_Resume () from /lib/x86_64-linux-gnu/libunwind.so.8
#3 0x00007ffff56d6f8a in __gnu_cxx::new_allocator<char>::deallocate (__t=<optimized out>, __p=<optimized out>, this=<optimized out>,
this=<optimized out>, __p=<optimized out>, __t=<optimized out>) at /usr/include/c++/11/ext/new_allocator.h:145
#4 std::allocator_traits<std::allocator<char> >::deallocate (__n=<optimized out>, __p=<optimized out>, __a=..., __a=..., __p=<optimized out>,
__n=<optimized out>) at /usr/include/c++/11/bits/alloc_traits.h:496
#5 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_destroy (__size=<optimized out>, this=<optimized out>,
this=<optimized out>, __size=<optimized out>) at /usr/include/c++/11/bits/basic_string.h:245
#6 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose (this=<optimized out>, this=<optimized out>)
at /usr/include/c++/11/bits/basic_string.h:240
#7 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string (this=<optimized out>, this=<optimized out>)
at /usr/include/c++/11/bits/basic_string.h:672
#8 boost::interprocess::shared_memory_object::shared_memory_object (this=0x7fffffff4cb0, name=<optimized out>, mode=<optimized out>)
at ./thirdparty/boost/include/boost/interprocess/shared_memory_object.hpp:83
#9 0x00007ffff5b3e40d in boost::interprocess::ipcdetail::managed_open_or_create_impl<boost::interprocess::shared_memory_object, 16ul, true, false>::priv_open_or_create<boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> > >(boost::interprocess::ipcdetail::create_enum_t, char const* const&, unsigned long, boost::interprocess::mode_t, void const*, boost::interprocess::permissions const&, boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> >) [clone .constprop.0] (this=this@entry=0x555555f57408, type=type@entry=boost::interprocess::ipcdetail::DoOpen,
id=@0x7fffffff4dc0: 0x555555f57430 "fastrtps_port14412", size=size@entry=0, mode=mode@entry=boost::interprocess::read_write, perm=...,
construct_func=..., addr=0x0) at ./thirdparty/boost/include/boost/interprocess/detail/managed_open_or_create_impl.hpp:339
#10 0x00007ffff5b36a75 in boost::interprocess::ipcdetail::managed_open_or_create_impl<boost::interprocess::shared_memory_object, 16ul, true, false>::managed_open_or_create_impl<boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> > > (construct_func=..., construct_func=..., addr=0x0, mode=boost::interprocess::read_write,
id=@0x7fffffff4dc0: 0x555555f57430 "fastrtps_port14412", this=0x555555f57408)
at ./thirdparty/boost/include/boost/interprocess/detail/managed_open_or_create_impl.hpp:202
#11 boost::interprocess::basic_managed_shared_memory<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index>::basic_managed_shared_memory (addr=0x0, name=<optimized out>,
this=0x555555f57400) at ./thirdparty/boost/include/boost/interprocess/managed_shared_memory.hpp:151
#12 eprosima::fastdds::rtps::SharedSegment<boost::interprocess::basic_managed_shared_memory<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index>, boost::interprocess::shared_memory_object>::SharedSegment(boost::interprocess::open_only_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [clone .constprop.0] (this=0x555555e3c400, name=...) at ./src/cpp/utils/shared_memory/SharedMemSegment.hpp:272
--Type <RET> for more, q to quit, c to continue without paging--c
#13 0x00007ffff59eeb77 in eprosima::fastdds::rtps::SharedMemGlobal::open_port_internal (this=0x555555e89950, port_id=14412, max_buffer_descriptors=512, healthy_check_timeout_ms=1000, open_mode=eprosima::fastdds::rtps::SharedMemGlobal::Port::OpenMode::ReadExclusive, regenerating_port=std::shared_ptr<eprosima::fastdds::rtps::SharedMemGlobal::Port> (empty) = {...}) at ./src/cpp/rtps/transport/shared_mem/SharedMemGlobal.hpp:1018
#14 0x00007ffff59f991c in eprosima::fastdds::rtps::SharedMemGlobal::open_port (open_mode=eprosima::fastdds::rtps::SharedMemGlobal::Port::OpenMode::ReadExclusive, healthy_check_timeout_ms=<optimized out>, max_buffer_descriptors=<optimized out>, port_id=<optimized out>, this=0x555555e89950) at ./src/cpp/rtps/transport/shared_mem/SharedMemGlobal.hpp:931
#15 eprosima::fastdds::rtps::SharedMemManager::open_port (open_mode=eprosima::fastdds::rtps::SharedMemGlobal::Port::OpenMode::ReadExclusive, healthy_check_timeout_ms=<optimized out>, max_descriptors=<optimized out>, port_id=<optimized out>, this=0x555555e898d0) at ./src/cpp/rtps/transport/shared_mem/SharedMemManager.hpp:985
#16 eprosima::fastdds::rtps::SharedMemTransport::CreateInputChannelResource (this=0x555555ea4700, locator=..., maxMsgSize=<optimized out>, receiver=0x555555e6bf50) at ./src/cpp/rtps/transport/shared_mem/SharedMemTransport.cpp:319
#17 0x00007ffff59f9025 in eprosima::fastdds::rtps::SharedMemTransport::OpenInputChannel (this=0x555555ea4700, locator=..., receiver=0x555555e6bf50, maxMsgSize=4294967295) at ./src/cpp/rtps/transport/shared_mem/SharedMemTransport.cpp:134
#18 0x00007ffff57c4670 in eprosima::fastrtps::rtps::ReceiverResource::ReceiverResource (this=<optimized out>, transport=..., locator=..., max_recv_buffer_size=<optimized out>, this=<optimized out>, transport=..., locator=..., max_recv_buffer_size=<optimized out>) at ./src/cpp/rtps/network/ReceiverResource.cpp:41
#19 0x00007ffff57c488e in eprosima::fastrtps::rtps::NetworkFactory::BuildReceiverResources (this=<optimized out>, local=..., returned_resources_list=std::vector of length 0, capacity 1, receiver_max_message_size=4294967295) at /usr/include/c++/11/bits/unique_ptr.h:173
#20 0x00007ffff57c9e87 in eprosima::fastrtps::rtps::RTPSParticipantImpl::createReceiverResources (this=0x555555f593e0, Locator_list=..., ApplyMutation=true, RegisterReceiver=false) at ./src/cpp/rtps/participant/RTPSParticipantImpl.cpp:1635
#21 0x00007ffff57caf3c in eprosima::fastrtps::rtps::RTPSParticipantImpl::RTPSParticipantImpl (this=<optimized out>, domain_id=<optimized out>, PParam=..., guidP=..., persistence_guid=..., par=<optimized out>, plisten=<optimized out>, this=<optimized out>, domain_id=<optimized out>, PParam=..., guidP=..., persistence_guid=..., par=<optimized out>, plisten=<optimized out>) at ./src/cpp/rtps/participant/RTPSParticipantImpl.cpp:353
#22 0x00007ffff57cbd59 in eprosima::fastrtps::rtps::RTPSParticipantImpl::RTPSParticipantImpl (this=<optimized out>, domain_id=<optimized out>, PParam=..., guidP=..., par=<optimized out>, plisten=<optimized out>, this=<optimized out>, domain_id=<optimized out>, PParam=..., guidP=..., par=<optimized out>, plisten=<optimized out>) at ./src/cpp/rtps/participant/RTPSParticipantImpl.cpp:440
#23 0x00007ffff57d7930 in eprosima::fastrtps::rtps::RTPSDomain::createParticipant (domain_id=28, enabled=<optimized out>, attrs=..., listen=0x555555f593c0) at ./src/cpp/rtps/RTPSDomain.cpp:182
#24 0x00007ffff5838070 in eprosima::fastdds::dds::DomainParticipantImpl::enable (this=0x555555f58840) at ./src/cpp/fastdds/domain/DomainParticipantImpl.cpp:304
#25 0x00007ffff5832026 in eprosima::fastdds::dds::DomainParticipant::enable (this=0x555555e71810) at ./src/cpp/fastdds/domain/DomainParticipant.cpp:95
#26 eprosima::fastdds::dds::DomainParticipant::enable (this=0x555555e71810) at ./src/cpp/fastdds/domain/DomainParticipant.cpp:87
#27 eprosima::fastdds::dds::DomainParticipantFactory::create_participant (this=0x7ffff5c9cb00 <eprosima::fastdds::dds::DomainParticipantFactory::get_instance()::instance>, did=did@entry=28, qos=..., listen=<optimized out>, mask=...) at ./src/cpp/fastdds/domain/DomainParticipantFactory.cpp:249
#28 0x00007ffff5d309f3 in __create_participant (identifier=0x7ffff5da6000 "rmw_fastrtps_cpp", domainParticipantQos=..., leave_middleware_default_qos=<optimized out>, publishing_mode=publishing_mode_t::SYNCHRONOUS, common_context=0x555555ec1d80, domain_id=28) at ./src/participant.cpp:99
#29 0x00007ffff5d3ca7d in rmw_fastrtps_shared_cpp::create_participant (identifier=identifier@entry=0x7ffff5da6000 "rmw_fastrtps_cpp", domain_id=28, security_options=security_options@entry=0x555555d86f18, localhost_only=<optimized out>, enclave=<optimized out>, common_context=common_context@entry=0x555555ec1d80) at ./src/participant.cpp:284
#30 0x00007ffff5d8eaa3 in init_context_impl (context=0x555555d86ef0) at /usr/include/c++/11/bits/std_function.h:211
#31 0x00007ffff5d97120 in rmw_fastrtps_cpp::increment_context_impl_ref_count (context=0x555555d86ef0) at ./src/init_rmw_context_impl.cpp:202
#32 rmw_create_node (context=0x555555d86ef0, name=0x7fffffffd310 "gstreamer_crash", namespace_=0x7ffff69a8866 "/") at ./src/rmw_node.cpp:60
#33 0x00007ffff69a085a in rcl_node_init () from /opt/ros/humble/lib/librcl.so
#34 0x00007ffff7004117 in ?? () from /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so
#35 0x00007ffff70076e4 in ?? () from /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so
#36 0x00007ffff6fcf1d9 in ?? () from /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so
#37 0x00005555556afb5e in ?? ()
#38 0x00005555556a67db in _PyObject_MakeTpCall ()
#39 0x00005555556be7c0 in ?? ()
#40 0x00005555556babbb in ?? ()
#41 0x00005555556a6b8b in ?? ()
#42 0x00007ffff6fcdf76 in ?? () from /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so
#43 0x00005555556a67db in _PyObject_MakeTpCall ()
#44 0x000055555569f48e in _PyEval_EvalFrameDefault ()
#45 0x00005555556b03ac in _PyFunction_Vectorcall ()
#46 0x00005555556a5a0d in _PyObject_FastCallDictTstate ()
#47 0x00005555556ba594 in ?? ()
#48 0x00005555556a677c in _PyObject_MakeTpCall ()
#49 0x000055555569fe1c in _PyEval_EvalFrameDefault ()
#50 0x00005555556b03ac in _PyFunction_Vectorcall ()
#51 0x000055555569ea72 in _PyEval_EvalFrameDefault ()
#52 0x0000555555695766 in ?? ()
#53 0x000055555578d456 in PyEval_EvalCode ()
#54 0x00005555557b9f08 in ?? ()
#55 0x00005555557b2d5b in ?? ()
#56 0x00005555557b9c55 in ?? ()
#57 0x00005555557b9138 in _PyRun_SimpleFileObject ()
#58 0x00005555557b8e33 in _PyRun_AnyFileObject ()
#59 0x00005555557aa0ae in Py_RunMain ()
#60 0x000055555578034d in Py_BytesMain ()
#61 0x00007ffff7c82d90 in __libc_start_call_main (main=main@entry=0x555555780310, argc=argc@entry=2, argv=argv@entry=0x7fffffffe3d8) at ../sysdeps/nptl/libc_start_call_main.h:58
#62 0x00007ffff7c82e40 in __libc_start_main_impl (main=0x555555780310, argc=2, argv=0x7fffffffe3d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe3c8) at ../csu/libc-start.c:392
#63 0x0000555555780245 in _start ()
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /usr/bin/python3 gst_rclpy.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff4fde640 (LWP 3505394)]
[New Thread 0x7ffff25ff640 (LWP 3506068)]
init
before node
[New Thread 0x7ffff0e70640 (LWP 3506305)]
[New Thread 0x7ffff05e8640 (LWP 3506306)]
[New Thread 0x7fffefde7640 (LWP 3506307)]
[New Thread 0x7fffef5e6640 (LWP 3506308)]
[New Thread 0x7fffeede5640 (LWP 3506309)]
Thread 1 "python3" hit Breakpoint 2, boost::interprocess::shared_memory_object::shared_memory_object (this=0x7fffffff1720, name=0x55555600e410 "fastrtps_port14411", mode=boost::interprocess::read_write) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/thirdparty/boost/include/boost/interprocess/shared_memory_object.hpp:83
83 { this->priv_open_or_create(ipcdetail::DoOpen, name, mode, permissions()); }
(gdb) bt
#0 boost::interprocess::shared_memory_object::shared_memory_object(boost::interprocess::open_only_t, char const*, boost::interprocess::mode_t) (this=0x7fffffff1720, name=0x55555600e410 "fastrtps_port14411", mode=boost::interprocess::read_write) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/thirdparty/boost/include/boost/interprocess/shared_memory_object.hpp:83
#1 0x00007ffff37f1d52 in boost::interprocess::ipcdetail::managed_open_or_create_impl<boost::interprocess::shared_memory_object, 16ul, true, false>::priv_open_or_create<boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> > >(boost::interprocess::ipcdetail::create_enum_t, char const* const&, unsigned long, boost::interprocess::mode_t, void const*, boost::interprocess::permissions const&, boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> >) (this=0x55555600e3e8, type=boost::interprocess::ipcdetail::DoOpen, id=@0x7fffffff1800: 0x55555600e410 "fastrtps_port14411", size=0, mode=boost::interprocess::read_write, addr=0x0, perm=..., construct_func=...) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/thirdparty/boost/include/boost/interprocess/detail/managed_open_or_create_impl.hpp:339
#2 0x00007ffff37f0994 in boost::interprocess::ipcdetail::managed_open_or_create_impl<boost::interprocess::shared_memory_object, 16ul, true, false>::managed_open_or_create_impl<boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> > >(boost::interprocess::open_only_t, char const* const&, boost::interprocess::mode_t, void const*, boost::interprocess::ipcdetail::create_open_func<boost::interprocess::ipcdetail::basic_managed_memory_impl<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index, 16ul> > const&) (this=0x55555600e3e8, id=@0x7fffffff1800: 0x55555600e410 "fastrtps_port14411", mode=boost::interprocess::read_write, addr=0x0, construct_func=...) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/thirdparty/boost/include/boost/interprocess/detail/managed_open_or_create_impl.hpp:202
#3 0x00007ffff38442bd in boost::interprocess::basic_managed_shared_memory<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index>::basic_managed_shared_memory(boost::interprocess::open_only_t, char const*, void const*) (this=0x55555600e3e0, name=0x55555600e410 "fastrtps_port14411", addr=0x0) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/thirdparty/boost/include/boost/interprocess/managed_shared_memory.hpp:151
#4 0x00007ffff3843ec2 in eprosima::fastdds::rtps::SharedSegment<boost::interprocess::basic_managed_shared_memory<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, unsigned int, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index>, boost::interprocess::shared_memory_object>::SharedSegment(boost::interprocess::open_only_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (this=0x555555fddff0, name="fastrtps_port14411") at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/src/cpp/utils/shared_memory/SharedMemSegment.hpp:341
#5 0x00007ffff3dc0193 in eprosima::fastdds::rtps::SharedMemGlobal::open_port_internal(unsigned int, unsigned int, unsigned int, eprosima::fastdds::rtps::SharedMemGlobal::Port::OpenMode, std::shared_ptr<eprosima::fastdds::rtps::SharedMemGlobal::Port>) (this=0x555555c2f130, port_id=14411, max_buffer_descriptors=512, healthy_check_timeout_ms=1000, open_mode=eprosima::fastdds::rtps::SharedMemGlobal::Port::OpenMode::ReadExclusive, regenerating_port=std::shared_ptr<eprosima::fastdds::rtps::SharedMemGlobal::Port> (empty) = {...}) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/src/cpp/rtps/transport/shared_mem/SharedMemGlobal.hpp:1078
...
The exception https://github.com/eProsima/Fast-DDS/blob/2bb06109920a886fda3ec39c8c6d333eaa4df011/thirdparty/boost/include/boost/interprocess/shared_memory_object.hpp#L363 happened at frame 1 should be propagated to https://github.com/eProsima/Fast-DDS/blob/7cf43a62cabc3124721258f02c9257f451dd1971/src/cpp/rtps/transport/shared_mem/SharedMemGlobal.hpp#L1078 that will be caught at https://github.com/eProsima/Fast-DDS/blob/7cf43a62cabc3124721258f02c9257f451dd1971/src/cpp/rtps/transport/shared_mem/SharedMemGlobal.hpp#L1165 in frame 5.
but after executing finish
the frame 1, the output shows throwing the boost::interprocess::interprocess_exception
that is not caught.
(gdb) fin
Run till exit from #0 boost::interprocess::shared_memory_object::shared_memory_object (this=0x7fffffff1720, name=0x55555600e410 "fastrtps_port14411", mode=boost::interprocess::read_write) at /home/chenlh/Projects/ROS2/ros2-master/src/eProsima/Fast-DDS/thirdparty/boost/include/boost/interprocess/shared_memory_object.hpp:83
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what(): No such file or directory
Thread 1 "python3" received signal SIGABRT, Aborted.
__pthread_kill_implementation (no_tid=0, signo=6, threadid=140737352327616) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
Very interesting, right?
I am afraid that the root issue might be related to either python3.10
or python3-gi python3-gst-1.0
.
I have confirmed that the gst_rclpy.py
run well with RMW_IMPLEMENTATION=rmw_fastrtps_cpp
on ROS 2 source galactic
which is built on ubuntu20(python3.8)
, but it failed to run on the ROS 2 source galactic
, which is the same source code, built on ubuntu22(python3.10)
.
And gst_rclpy.py
can run well with ROS 2 source humble
built on ubuntu20(python3.8).
I don't know what kinds of situations/steps can cause the call stack or stack frames to be corrupted.
@fujitatomoya @clalancette @MiguelCompany Do you have any suggestions?
One idea I have is that maybe the ABI between the vendored copy of boost in fastrtps, and boost from the system, are colliding. That only makes sense if gstreamer depends on boost, which I don't know if that is the case.
@MiguelCompany Is it possible to have Fast-DDS use the system copy of boost, rather than the vendored copy? If so, how do you do that?
according to pmap for shared libraries, boost is not linked in the core.
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x00007fb6c36793a0 0x00007fb6c36f48e8 No /lib/x86_64-linux-gnu/libm.so.6
0x00007fb6c363c290 0x00007fb6c365a5a7 No /lib/x86_64-linux-gnu/libexpat.so.1
0x00007fb6c361e280 0x00007fb6c362ec14 No /lib/x86_64-linux-gnu/libz.so.1
0x00007fb6c341c700 0x00007fb6c35aeabd No /lib/x86_64-linux-gnu/libc.so.6
0x00007fb6c3773090 0x00007fb6c379c335 No /lib64/ld-linux-x86-64.so.2
0x00007fb6c37555a0 0x00007fb6c375720b No /usr/lib/python3.10/lib-dynload/_bz2.cpython-310-x86_64-linux-gnu.so
0x00007fb6c2c10280 0x00007fb6c2c1c563 No /lib/x86_64-linux-gnu/libbz2.so.1.0
0x00007fb6c2c29920 0x00007fb6c2c2c891 No /usr/lib/python3.10/lib-dynload/_lzma.cpython-310-x86_64-linux-gnu.so
0x00007fb6c2bd53c0 0x00007fb6c2bef0de No /lib/x86_64-linux-gnu/liblzma.so.5
0x00007fb6c2946300 0x00007fb6c296f43b No /usr/lib/python3/dist-packages/gi/_gi.cpython-310-x86_64-linux-gnu.so
0x00007fb6c2817b20 0x00007fb6c28a4f22 No /lib/x86_64-linux-gnu/libglib-2.0.so.0
0x00007fb6c27a8fd0 0x00007fb6c27dac5e No /lib/x86_64-linux-gnu/libgobject-2.0.so.0
0x00007fb6c277e350 0x00007fb6c278deba No /lib/x86_64-linux-gnu/libgirepository-1.0.so.1
0x00007fb6c2e3b460 0x00007fb6c2e41392 No /lib/x86_64-linux-gnu/libffi.so.8
0x00007fb6c27022a0 0x00007fb6c27565b0 No /lib/x86_64-linux-gnu/libpcre.so.3
0x00007fb6c2e344a0 0x00007fb6c2e35433 No /lib/x86_64-linux-gnu/libgmodule-2.0.so.0
0x00007fb6c25663e0 0x00007fb6c266f0cd No /lib/x86_64-linux-gnu/libgio-2.0.so.0
0x00007fb6c24ec290 0x00007fb6c2516dc1 No /lib/x86_64-linux-gnu/libmount.so.1
0x00007fb6c24bdfc0 0x00007fb6c24d667d No /lib/x86_64-linux-gnu/libselinux.so.1
0x00007fb6c2487d10 0x00007fb6c24a6831 No /lib/x86_64-linux-gnu/libblkid.so.1
0x00007fb6c23eb2e0 0x00007fb6c2455adf No /lib/x86_64-linux-gnu/libpcre2-8.so.0
0x00007fb6c2e53140 0x00007fb6c2e5342d No /usr/lib/python3.10/lib-dynload/_opcode.cpython-310-x86_64-linux-gnu.so
0x00007fb6c22b2020 0x00007fb6c22de23c No /usr/lib/python3/dist-packages/yaml/_yaml.cpython-310-x86_64-linux-gnu.so
0x00007fb6c228c240 0x00007fb6c22a4a0d No /lib/x86_64-linux-gnu/libyaml-0.so.2
0x00007fb6c2029f80 0x00007fb6c21bbdee No /root/ros2_ws/colcon_ws/install/rclpy/lib/python3.10/site-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so
0x00007fb6c1ffcc20 0x00007fb6c2004aa8 No /root/ros2_ws/colcon_ws/install/rcl_action/lib/librcl_action.so
0x00007fb6c2c045c0 0x00007fb6c2c08f4c No /root/ros2_ws/colcon_ws/install/rcl_lifecycle/lib/librcl_lifecycle.so
0x00007fb6c1a80c40 0x00007fb6c1d2f83e No /lib/x86_64-linux-gnu/libpython3.10.so.1.0
0x00007fb6c19d1d00 0x00007fb6c19f8d22 No /root/ros2_ws/colcon_ws/install/rcl/lib/librcl.so
0x00007fb6c2e4e120 0x00007fb6c2e4e5a9 No /root/ros2_ws/colcon_ws/install/rcl_logging_interface/lib/librcl_logging_interface.so
0x00007fb6c19b7820 0x00007fb6c19be8a1 No /root/ros2_ws/colcon_ws/install/rcl_yaml_param_parser/lib/librcl_yaml_param_parser.so
0x00007fb6c19ab3e0 0x00007fb6c19afc2c No /root/ros2_ws/colcon_ws/install/rmw_implementation/lib/librmw_implementation.so
0x00007fb6c199e600 0x00007fb6c19a2f19 No /root/ros2_ws/colcon_ws/install/rmw/lib/librmw.so
0x00007fb6c1995040 0x00007fb6c1995569 No /root/ros2_ws/colcon_ws/install/lifecycle_msgs/lib/liblifecycle_msgs__ro--Type <RET> for more, q to quit, c to continue without paging--
sidl_typesupport_c.so
0x00007fb6c1972f60 0x00007fb6c1981d40 No /root/ros2_ws/colcon_ws/install/rcutils/lib/librcutils.so
0x00007fb6c17e3420 0x00007fb6c18ebfc2 No /lib/x86_64-linux-gnu/libstdc++.so.6
0x00007fb6c1724660 0x00007fb6c173a805 No /lib/x86_64-linux-gnu/libgcc_s.so.1
0x00007fb6c1705080 0x00007fb6c17140f7 No /root/ros2_ws/colcon_ws/install/rosidl_runtime_c/lib/librosidl_runtime_c.so
0x00007fb6c16dc260 0x00007fb6c16f1cef No /root/ros2_ws/colcon_ws/install/tracetools/lib/libtracetools.so
0x00007fb6c16b45e0 0x00007fb6c16c229c No /root/ros2_ws/colcon_ws/install/lifecycle_msgs/lib/liblifecycle_msgs__rosidl_generator_c.so
0x00007fb6c169db50 0x00007fb6c16a2a29 No /root/ros2_ws/colcon_ws/install/rcl_logging_spdlog/lib/librcl_logging_spdlog.so
0x00007fb6c1682040 0x00007fb6c1682ba0 No /root/ros2_ws/colcon_ws/install/rcl_interfaces/lib/librcl_interfaces__rosidl_typesupport_c.so
0x00007fb6c1661ce0 0x00007fb6c1670571 No /root/ros2_ws/colcon_ws/install/rosidl_dynamic_typesupport/lib/librosidl_dynamic_typesupport.so
0x00007fb6c1655040 0x00007fb6c16553dc No /root/ros2_ws/colcon_ws/install/type_description_interfaces/lib/libtype_description_interfaces__rosidl_typesupport_c.so
0x00007fb6c163ee00 0x00007fb6c1646f85 No /root/ros2_ws/colcon_ws/install/type_description_interfaces/lib/libtype_description_interfaces__rosidl_generator_c.so
0x00007fb6c162ddb0 0x00007fb6c1631fff No /root/ros2_ws/colcon_ws/install/ament_index_cpp/lib/libament_index_cpp.so
0x00007fb6c1613a80 0x00007fb6c161afb7 No /root/ros2_ws/colcon_ws/install/rcpputils/lib/librcpputils.so
0x00007fb6c2e485e0 0x00007fb6c2e49c3d No /root/ros2_ws/colcon_ws/install/rosidl_typesupport_c/lib/librosidl_typesupport_c.so
0x00007fb6c158d220 0x00007fb6c15d328b No /lib/x86_64-linux-gnu/liblttng-ust.so.1
0x00007fb6c157c2a0 0x00007fb6c157cefc No /root/ros2_ws/colcon_ws/install/service_msgs/lib/libservice_msgs__rosidl_generator_c.so
0x00007fb6c1575280 0x00007fb6c1576565 No /root/ros2_ws/colcon_ws/install/builtin_interfaces/lib/libbuiltin_interfaces__rosidl_generator_c.so
0x00007fb6c1529de0 0x00007fb6c155cfd7 No /lib/x86_64-linux-gnu/libspdlog.so.1
0x00007fb6c14ba2c0 0x00007fb6c14da49e No /root/ros2_ws/colcon_ws/install/rcl_interfaces/lib/librcl_interfaces__rosidl_generator_c.so
0x00007fb6c1497800 0x00007fb6c149c822 No /lib/x86_64-linux-gnu/libnuma.so.1
0x00007fb6c14886e0 0x00007fb6c148ebe7 No /lib/x86_64-linux-gnu/liblttng-ust-common.so.1
0x00007fb6c146a460 0x00007fb6c14705ee No /lib/x86_64-linux-gnu/liblttng-ust-tracepoint.so.1
0x00007fb6c144b710 0x00007fb6c1460a5f No /lib/x86_64-linux-gnu/libfmt.so.8
0x00007fb6c022a170 0x00007fb6c027bb83 No /root/ros2_ws/colcon_ws/install/rmw_fastrtps_cpp/lib/librmw_fastrtps_cpp.so
0x00007fb6c0120d30 0x00007fb6c01b616c No /root/ros2_ws/colcon_ws/install/rmw_fastrtps_shared_cpp/lib/librmw_fastrtps_shared_cpp.so
--Type <RET> for more, q to quit, c to continue without paging--
0x00007fb6c2bce0e0 0x00007fb6c2bce2b3 No /root/ros2_ws/colcon_ws/install/rosidl_typesupport_fastrtps_c/lib/librosidl_typesupport_fastrtps_c.so
0x00007fb6c2bc8720 0x00007fb6c2bc9486 No /root/ros2_ws/colcon_ws/install/rosidl_typesupport_fastrtps_cpp/lib/librosidl_typesupport_fastrtps_cpp.so
0x00007fb6bb7c8ce0 0x00007fb6bb7e8a7b No /root/ros2_ws/colcon_ws/install/rmw_dds_common/lib/librmw_dds_common.so
0x00007fb6c2bc10a0 0x00007fb6c2bc1297 No /root/ros2_ws/colcon_ws/install/rmw_dds_common/lib/librmw_dds_common__rosidl_typesupport_cpp.so
0x00007fb6bb748c40 0x00007fb6bb76a6bc No /root/ros2_ws/colcon_ws/install/rosidl_dynamic_typesupport_fastrtps/lib/librosidl_dynamic_typesupport_fastrtps.so
0x00007fb6baf53e70 0x00007fb6bb578934 No /root/ros2_ws/colcon_ws/install/fastrtps/lib/libfastrtps.so.2.12
0x00007fb6c2bb0b40 0x00007fb6c2bb86e9 No /root/ros2_ws/colcon_ws/install/fastcdr/lib/libfastcdr.so.1
0x00007fb6c2ba6040 0x00007fb6c2ba60f9 No /root/ros2_ws/colcon_ws/install/rosidl_typesupport_introspection_cpp/lib/librosidl_typesupport_introspection_cpp.so
0x00007fb6c2ba1040 0x00007fb6c2ba10f9 No /root/ros2_ws/colcon_ws/install/rosidl_typesupport_introspection_c/lib/librosidl_typesupport_introspection_c.so
0x00007fb6c2b99500 0x00007fb6c2b9b786 No /root/ros2_ws/colcon_ws/install/rmw_dds_common/lib/librmw_dds_common__rosidl_generator_c.so
0x00007fb6c2b92600 0x00007fb6c2b93b91 No /root/ros2_ws/colcon_ws/install/rosidl_typesupport_cpp/lib/librosidl_typesupport_cpp.so
0x00007fb6c00353c0 0x00007fb6c003e0f9 No /lib/x86_64-linux-gnu/libtinyxml2.so.9
0x00007fb6bad04d70 0x00007fb6bad5bede No /lib/x86_64-linux-gnu/libssl.so.3
0x00007fb6ba955000 0x00007fb6babafe22 No /lib/x86_64-linux-gnu/libcrypto.so.3
0x00007fb6b9f14720 0x00007fb6b9fc9298 No /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
0x00007fb6c0004280 0x00007fb6c000d5bf No /lib/x86_64-linux-gnu/libunwind.so.8
0x00007fb6b9e492b0 0x00007fb6b9eadabc No /lib/x86_64-linux-gnu/libdw.so.1
0x00007fb6b9e1a5a0 0x00007fb6b9e2d31c No /lib/x86_64-linux-gnu/libelf.so.1
0x00007fb6b9e108e0 0x00007fb6b9e132b8 No /lib/x86_64-linux-gnu/libdebuginfod.so.1
0x00007fb6b9d7cd00 0x00007fb6b9deb251 No /lib/x86_64-linux-gnu/libcurl-gnutls.so.4
0x00007fb6b9d471c0 0x00007fb6b9d5b546 No /lib/x86_64-linux-gnu/libnghttp2.so.14
0x00007fb6b9d233e0 0x00007fb6b9d26579 No /lib/x86_64-linux-gnu/libidn2.so.0
0x00007fb6b9d07d80 0x00007fb6b9d16fd9 No /lib/x86_64-linux-gnu/librtmp.so.1
0x00007fb6b9ca4460 0x00007fb6b9ce4698 No /lib/x86_64-linux-gnu/libssh.so.4
0x00007fb6b9c833e0 0x00007fb6b9c84ea3 No /lib/x86_64-linux-gnu/libpsl.so.5
0x00007fb6b9c45260 0x00007fb6b9c677dc No /lib/x86_64-linux-gnu/libnettle.so.8
0x00007fb6b9a83b40 0x00007fb6b9ba9afd No /lib/x86_64-linux-gnu/libgnutls.so.30
0x00007fb6b9a093f0 0x00007fb6b9a3e8c8 No /lib/x86_64-linux-gnu/libgssapi_krb5.so.2
0x00007fb6b99ad000 0x00007fb6b99e4e0c No /lib/x86_64-linux-gnu/libldap-2.5.so.0
0x00007fb6b998f360 0x00007fb6b9996341 No /lib/x86_64-linux-gnu/liblber-2.5.so.0
0x00007fb6b98c7220 0x00007fb6b9978f02 No /lib/x86_64-linux-gnu/libzstd.so.1
0x00007fb6b98b0140 0x00007fb6b98b70da No /lib/x86_64-linux-gnu/libbrotlidec.so.1
--Type <RET> for more, q to quit, c to continue without paging--
0x00007fb6b9716790 0x00007fb6b974bb51 No /lib/x86_64-linux-gnu/libunistring.so.2
0x00007fb6b96c5c80 0x00007fb6b96d7b89 No /lib/x86_64-linux-gnu/libhogweed.so.6
0x00007fb6b9645440 0x00007fb6b96a354d No /lib/x86_64-linux-gnu/libgmp.so.10
0x00007fb6b9529be0 0x00007fb6b95cc3a0 No /lib/x86_64-linux-gnu/libp11-kit.so.0
0x00007fb6b94eb4a0 0x00007fb6b94f820b No /lib/x86_64-linux-gnu/libtasn1.so.6
0x00007fb6b943ff50 0x00007fb6b949ab77 No /lib/x86_64-linux-gnu/libkrb5.so.3
0x00007fb6b93f24c0 0x00007fb6b940c5f2 No /lib/x86_64-linux-gnu/libk5crypto.so.3
0x00007fb6c2b8c3c0 0x00007fb6c2b8cf59 No /lib/x86_64-linux-gnu/libcom_err.so.2
0x00007fb6b93e3630 0x00007fb6b93e8a24 No /lib/x86_64-linux-gnu/libkrb5support.so.0
0x00007fb6b93c8860 0x00007fb6b93d80e4 No /lib/x86_64-linux-gnu/libsasl2.so.2
0x00007fb6b93a3080 0x00007fb6b93a35b5 No /lib/x86_64-linux-gnu/libbrotlicommon.so.1
0x00007fb6b939d260 0x00007fb6b939e404 No /lib/x86_64-linux-gnu/libkeyutils.so.1
0x00007fb6b938a6a0 0x00007fb6b9393229 No /lib/x86_64-linux-gnu/libresolv.so.2
0x00007fb6c0026b40 0x00007fb6c0029157 No /usr/lib/python3/dist-packages/gi/overrides/_gi_gst.cpython-310-x86_64-linux-gnu.so
0x00007fb6b9182440 0x00007fb6b91831db No /usr/lib/python3.10/lib-dynload/_queue.cpython-310-x86_64-linux-gnu.so
That only makes sense if gstreamer depends on boost, which I don't know if that is the case.
I think that it's making use of pygobject, which doesn't seem to have any boost in the build: https://gitlab.gnome.org/GNOME/pygobject
Thanks for your reply. These help me a lot.
I tried to find out the difference of gst_rclpy.py
run on ROS 2 source galactic
between ubunt20
and ubuntu22
by debugging the path (layout asm
in gdb step by step -> libstdc++.so.6.0.[28|30] -> libgcc_s.so.1 -> libunwind.so.8.0.1(not in ubuntu20) ).
After building the libunwind-1.3.2
, which is needed on ubuntu22, the gst_rclpy.py
works well with the build version of libunwind.so.8.0.1
. (The gst_rclpy.py
also works well on ROS 2 rolling
with the libunwind-1.3.2
on ubuntu22.)
Unfortunately, I have no theory to convince myself that this is a solution, it might only adjust the code mapping to update timing access for certain functions.
@jwakely, could you share some information with me? I would greatly appreciate it.
Updated: Building libunwind-1.3.2
with default options mentioned above doesn't include the --enable-cxx-exceptions
. :sweat:
It seems it's the problem of mixed-using the _Unwind_RaiseException and _Unwind_Resume
between gcc and libunwind.
Thread 1 "python3" hit Breakpoint 1, 0x00007ffff5f65c38 in _Unwind_RaiseException () from /lib/x86_64-linux-gnu/libgcc_s.so.1
(gdb) c
Continuing.
Thread 1 "python3" hit Breakpoint 2, _Unwind_Resume (exception_object=0x555555fdf8c0) at unwind/Resume.c:30
30 {
(gdb) c
Continuing.
```shell
chenlh ros2-master $ gdb /usr/bin/python3
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later , globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__':
Bug report
Importing Gstreamer python bindings seems to make rclpy segfault or abort when trying to create a node.
Required Info:
ros-humble-ros-core/now 0.10.0-1jammy.20230623.212334 amd64
Steps to reproduce issue
Minimal example:
Running a container from a directory with the above script,
gst_rclpy.py
:docker run --rm -it -v .:/test ros:humble bash
Inside:Output:
Expected behavior
No crash.
Actual behavior
Quickly tested on different distributions; it works on
ros:foxy
andros:galactic
, and crashes onros:humble
and onwards. Also, I happened to notice if a node is created before importing Gstreamer, it seems to avoid the crash (though this didn't seem to be a reliable fix in our actual application).