open-rmf/rmf_ros2

Heap use after free in RxCpp new_thread.

Closed this issue · 0 comments

Bug report

Required information:

  • Operating system and version:
    • Ubuntu 20.04
  • OpenRMF installation type:
    • Source
  • OpenRMF version or commit hash
  • ROS distribution and version:
    • Foxy
  • ROS installation type:
    • Binary
  • Package or library, if applicable:
    • RxCpp

Description of the bug

After running rmf_traffic_ros2 through ASAN one receives the following heap-use-after-free error.

==1958562==ERROR: AddressSanitizer: heap-use-after-free on address 0x60d00003c240 at pc 0x000000900a6a bp 0x7f768d5bddf0 sp 0x7f768d5bd5b8
READ of size 8 at 0x60d00003c240 thread T174
    #0 0x900a69 in __asan_memcpy (/home/arjo/rmf_ws/build/rmf_fleet_adapter/test_rmf_fleet_adapter+0x900a69)
    #1 0xb5a375 in std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >::time_since_epoch() const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/chrono:650:11
    #2 0xb59f0b in bool std::chrono::operator<<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> >, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/chrono:782:50
    #3 0xb593b4 in std::cv_status std::condition_variable::wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/condition_variable:126:20
    #4 0xcfd8c8 in rxcpp::schedulers::new_thread::new_worker::new_worker(rxcpp::composite_subscription, std::function<std::thread (std::function<void ()>)>&)::'lambda0'()::operator()() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:112:41
    #5 0xcfd1cc in std::_Function_handler<void (), rxcpp::schedulers::new_thread::new_worker::new_worker(rxcpp::composite_subscription, std::function<std::thread (std::function<void ()>)>&)::'lambda0'()>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
    #6 0xb49f80 in std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
    #7 0xb4babc in void std::__invoke_impl<void, std::function<void ()> >(std::__invoke_other, std::function<void ()>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:14
    #8 0xb4ba4c in std::__invoke_result<std::function<void ()> >::type std::__invoke<std::function<void ()> >(std::function<void ()>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:14
    #9 0xb4ba24 in void std::thread::_Invoker<std::tuple<std::function<void ()> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:244:13
    #10 0xb4b9f4 in std::thread::_Invoker<std::tuple<std::function<void ()> > >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:251:11
    #11 0xb4b57d in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::function<void ()> > > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:195:13
    #12 0x7f769b396de3  (/lib/x86_64-linux-gnu/libstdc++.so.6+0xd6de3)
    #13 0x7f769b157608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477:8
    #14 0x7f769b056292 in clone /build/glibc-eX1tMB/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95

0x60d00003c240 is located 0 bytes inside of 144-byte region [0x60d00003c240,0x60d00003c2d0)
freed by thread T0 here:
    #0 0x9315ed in operator delete(void*) (/home/arjo/rmf_ws/build/rmf_fleet_adapter/test_rmf_fleet_adapter+0x9315ed)
    #1 0xcab8ff in __gnu_cxx::new_allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >::deallocate(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:128:2
    #2 0xcab8d7 in std::allocator_traits<std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::deallocate(std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >&, std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:470:13
    #3 0xcab16a in std::_Vector_base<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::_M_deallocate(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:351:4
    #4 0xcaa73a in void std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::_M_realloc_insert<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >(__gnu_cxx::__normal_iterator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>*, std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > > >, std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/vector.tcc:500:7
    #5 0xcaa070 in std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>& std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::emplace_back<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/vector.tcc:121:4
    #6 0xca95ff in std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::push_back(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1201:9
    #7 0xca93d9 in std::priority_queue<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >, rxcpp::schedulers::detail::schedulable_queue<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >::compare_elem>::push(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_queue.h:637:4
    #8 0xca90c8 in rxcpp::schedulers::detail::schedulable_queue<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >::push(rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >&&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:942:11
    #9 0xcf7be9 in rxcpp::schedulers::new_thread::new_worker::schedule(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:135:26
    #10 0xcf78de in rxcpp::schedulers::new_thread::new_worker::schedule(rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:129:13
    #11 0xbd0447 in std::enable_if<((detail::is_action_function<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::value) || (is_subscription<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::value)) && (!(is_schedulable<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::value)), void>::type rxcpp::schedulers::worker::schedule<void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda'(rxcpp::schedulers::schedulable const&) const&>(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >&&, void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda'(rxcpp::schedulers::schedulable const&) const&...) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:808:12
    #12 0xbd0201 in void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda0'()::operator()() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/operators/rx-subscribe_on.hpp:119:24
    #13 0xbd01b4 in rxcpp::static_subscription<void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda0'()>::unsubscribe() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:63:9
    #14 0xbd016c in rxcpp::subscription::subscription_state<rxcpp::static_subscription<void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda0'()> >::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:99:23
    #15 0xc95be2 in rxcpp::subscription::unsubscribe() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:175:16
    #16 0xc95978 in rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&)::operator()(rxcpp::subscription const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:283:35
    #17 0xc95442 in rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&) std::for_each<std::_Rb_tree_const_iterator<rxcpp::subscription>, rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&)>(std::_Rb_tree_const_iterator<rxcpp::subscription>, std::_Rb_tree_const_iterator<rxcpp::subscription>, rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&)) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3876:2
    #18 0xc950b4 in rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:281:17
    #19 0xc94df4 in rxcpp::detail::composite_subscription_inner::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:350:16
    #20 0xc949fc in rxcpp::subscription::subscription_state<rxcpp::detail::composite_subscription_inner>::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:99:23
    #21 0xc95be2 in rxcpp::subscription::unsubscribe() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:175:16
    #22 0xbd37f5 in void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda1'()::operator()() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/operators/rx-subscribe_on.hpp:123:16
    #23 0xbd37b4 in rxcpp::static_subscription<void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda1'()>::unsubscribe() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:63:9
    #24 0xbd376c in rxcpp::subscription::subscription_state<rxcpp::static_subscription<void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda1'()> >::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:99:23
    #25 0xc95be2 in rxcpp::subscription::unsubscribe() const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:175:16
    #26 0xc95978 in rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&)::operator()(rxcpp::subscription const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:283:35
    #27 0xc95442 in rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&) std::for_each<std::_Rb_tree_const_iterator<rxcpp::subscription>, rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&)>(std::_Rb_tree_const_iterator<rxcpp::subscription>, std::_Rb_tree_const_iterator<rxcpp::subscription>, rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe()::'lambda'(rxcpp::subscription const&)) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3876:2
    #28 0xc950b4 in rxcpp::detail::composite_subscription_inner::composite_subscription_state::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:281:17
    #29 0xc94df4 in rxcpp::detail::composite_subscription_inner::unsubscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-subscription.hpp:350:16

previously allocated by thread T0 here:
    #0 0x930d8d in operator new(unsigned long) (/home/arjo/rmf_ws/build/rmf_fleet_adapter/test_rmf_fleet_adapter+0x930d8d)
    #1 0xcab538 in __gnu_cxx::new_allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27
    #2 0xcab4e3 in std::allocator_traits<std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::allocate(std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >&, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:444:20
    #3 0xcab032 in std::_Vector_base<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::_M_allocate(unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:343:20
    #4 0xcaa3d7 in void std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::_M_realloc_insert<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >(__gnu_cxx::__normal_iterator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>*, std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > > >, std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/vector.tcc:440:33
    #5 0xcaa070 in std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>& std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::emplace_back<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> >(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/vector.tcc:121:4
    #6 0xca95ff in std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >::push_back(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1201:9
    #7 0xca93d9 in std::priority_queue<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::vector<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>, std::allocator<std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long> > >, rxcpp::schedulers::detail::schedulable_queue<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >::compare_elem>::push(std::pair<rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >, long>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_queue.h:637:4
    #8 0xca90c8 in rxcpp::schedulers::detail::schedulable_queue<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >::push(rxcpp::schedulers::detail::time_schedulable<std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > >&&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:942:11
    #9 0xcf7be9 in rxcpp::schedulers::new_thread::new_worker::schedule(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:135:26
    #10 0xcf78de in rxcpp::schedulers::new_thread::new_worker::schedule(rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:129:13
    #11 0xbcb747 in std::enable_if<((detail::is_action_function<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::value) || (is_subscription<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::value)) && (!(is_schedulable<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::value)), void>::type rxcpp::schedulers::worker::schedule<void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda0'(rxcpp::schedulers::schedulable const&)&>(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >&&, void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const::'lambda0'(rxcpp::schedulers::schedulable const&)&...) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:808:12
    #12 0xbc9e60 in void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/operators/rx-subscribe_on.hpp:139:20
    #13 0xbc84e8 in rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::subscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:466:17
    #14 0xbc92f8 in rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::operator()(rxcpp::schedulers::schedulable const&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:478:9
    #15 0xbc9171 in std::_Function_handler<void (rxcpp::schedulers::schedulable const&), rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > > >::_M_invoke(std::_Any_data const&, rxcpp::schedulers::schedulable const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
    #16 0xcb7ead in std::function<void (rxcpp::schedulers::schedulable const&)>::operator()(rxcpp::schedulers::schedulable const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
    #17 0xcb7b42 in rxcpp::schedulers::detail::action_tailrecurser::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:712:13
    #18 0xcb77c6 in std::_Function_handler<void (rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&), rxcpp::schedulers::detail::action_tailrecurser>::_M_invoke(std::_Any_data const&, rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
    #19 0xcaeef2 in std::function<void (rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&)>::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
    #20 0xcaed99 in rxcpp::schedulers::detail::action_type::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:679:9
    #21 0xcaec7f in rxcpp::schedulers::action::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:727:5
    #22 0xca5e9c in rxcpp::schedulers::schedulable::operator()(rxcpp::schedulers::recurse const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:645:9
    #23 0xca512e in rxcpp::schedulers::current_thread::current_worker::schedule(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-currentthread.hpp:210:17
    #24 0xca4c9e in rxcpp::schedulers::current_thread::current_worker::schedule(rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-currentthread.hpp:183:13
    #25 0xbc81b7 in std::enable_if<((detail::is_action_function<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>::value) || (is_subscription<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>::value)) && (!(is_schedulable<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>::value)), void>::type rxcpp::schedulers::worker::schedule<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>(rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:808:12
    #26 0xbc787e in rxcpp::composite_subscription rxcpp::observable<long, rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker> >::detail_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:551:52
    #27 0xbb1eba in rxcpp::composite_subscription rxcpp::observable<long, rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker> >::subscribe<rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5>(rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5&&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:671:16
    #28 0xbad48a in rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/test/phases/test_DoorOpen.cpp:184:10
    #29 0xc032f2 in Catch::TestInvokerAsMethod<rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0>::invoke() const /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:821:5

Thread T174 created by T0 here:
    #0 0x8ec3ca in pthread_create (/home/arjo/rmf_ws/build/rmf_fleet_adapter/test_rmf_fleet_adapter+0x8ec3ca)
    #1 0x7f769b3970a8 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib/x86_64-linux-gnu/libstdc++.so.6+0xd70a8)
    #2 0xcf4d41 in rxcpp::schedulers::new_thread::new_thread()::'lambda'(std::function<void ()>)::operator()(std::function<void ()>) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:147:20
    #3 0xcf4ad6 in std::_Function_handler<std::thread (std::function<void ()>), rxcpp::schedulers::new_thread::new_thread()::'lambda'(std::function<void ()>)>::_M_invoke(std::_Any_data const&, std::function<void ()>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
    #4 0xcf7303 in std::function<std::thread (std::function<void ()>)>::operator()(std::function<void ()>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
    #5 0xcf6c2e in rxcpp::schedulers::new_thread::new_worker::new_worker(rxcpp::composite_subscription, std::function<std::thread (std::function<void ()>)>&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:87:29
    #6 0xcf68a7 in void __gnu_cxx::new_allocator<rxcpp::schedulers::new_thread::new_worker>::construct<rxcpp::schedulers::new_thread::new_worker, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(rxcpp::schedulers::new_thread::new_worker*, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:147:23
    #7 0xcf63f1 in void std::allocator_traits<std::allocator<rxcpp::schedulers::new_thread::new_worker> >::construct<rxcpp::schedulers::new_thread::new_worker, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(std::allocator<rxcpp::schedulers::new_thread::new_worker>&, rxcpp::schedulers::new_thread::new_worker*, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:484:8
    #8 0xcf5f7b in std::_Sp_counted_ptr_inplace<rxcpp::schedulers::new_thread::new_worker, std::allocator<rxcpp::schedulers::new_thread::new_worker>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(std::allocator<rxcpp::schedulers::new_thread::new_worker>, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:548:4
    #9 0xcf59ff in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<rxcpp::schedulers::new_thread::new_worker, std::allocator<rxcpp::schedulers::new_thread::new_worker>, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(rxcpp::schedulers::new_thread::new_worker*&, std::_Sp_alloc_shared_tag<std::allocator<rxcpp::schedulers::new_thread::new_worker> >, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:680:6
    #10 0xcf56f1 in std::__shared_ptr<rxcpp::schedulers::new_thread::new_worker, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<rxcpp::schedulers::new_thread::new_worker>, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(std::_Sp_alloc_shared_tag<std::allocator<rxcpp::schedulers::new_thread::new_worker> >, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:1344:14
    #11 0xcf5498 in std::shared_ptr<rxcpp::schedulers::new_thread::new_worker>::shared_ptr<std::allocator<rxcpp::schedulers::new_thread::new_worker>, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(std::_Sp_alloc_shared_tag<std::allocator<rxcpp::schedulers::new_thread::new_worker> >, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr.h:359:4
    #12 0xcf5236 in std::shared_ptr<rxcpp::schedulers::new_thread::new_worker> std::allocate_shared<rxcpp::schedulers::new_thread::new_worker, std::allocator<rxcpp::schedulers::new_thread::new_worker>, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(std::allocator<rxcpp::schedulers::new_thread::new_worker> const&, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr.h:701:14
    #13 0xcf4f59 in std::shared_ptr<rxcpp::schedulers::new_thread::new_worker> std::make_shared<rxcpp::schedulers::new_thread::new_worker, rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&>(rxcpp::composite_subscription&, std::function<std::thread (std::function<void ()>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr.h:717:14
    #14 0xcf47c3 in rxcpp::schedulers::new_thread::create_worker(rxcpp::composite_subscription) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-newthread.hpp:164:27
    #15 0xca061a in rxcpp::schedulers::scheduler::create_worker(rxcpp::composite_subscription) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:413:23
    #16 0xcffb9c in rxcpp::observe_on_one_worker::create_coordinator(rxcpp::composite_subscription) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/operators/rx-observe_on.hpp:313:26
    #17 0xbc97d4 in void rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>::on_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/operators/rx-subscribe_on.hpp:96:49
    #18 0xbc84e8 in rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::subscribe() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:466:17
    #19 0xbc92f8 in rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >::operator()(rxcpp::schedulers::schedulable const&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:478:9
    #20 0xbc9171 in std::_Function_handler<void (rxcpp::schedulers::schedulable const&), rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > > >::_M_invoke(std::_Any_data const&, rxcpp::schedulers::schedulable const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
    #21 0xcb7ead in std::function<void (rxcpp::schedulers::schedulable const&)>::operator()(rxcpp::schedulers::schedulable const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
    #22 0xcb7b42 in rxcpp::schedulers::detail::action_tailrecurser::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:712:13
    #23 0xcb77c6 in std::_Function_handler<void (rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&), rxcpp::schedulers::detail::action_tailrecurser>::_M_invoke(std::_Any_data const&, rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
    #24 0xcaeef2 in std::function<void (rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&)>::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
    #25 0xcaed99 in rxcpp::schedulers::detail::action_type::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:679:9
    #26 0xcaec7f in rxcpp::schedulers::action::operator()(rxcpp::schedulers::schedulable const&, rxcpp::schedulers::recurse const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:727:5
    #27 0xca5e9c in rxcpp::schedulers::schedulable::operator()(rxcpp::schedulers::recurse const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:645:9
    #28 0xca512e in rxcpp::schedulers::current_thread::current_worker::schedule(std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-currentthread.hpp:210:17
    #29 0xca4c9e in rxcpp::schedulers::current_thread::current_worker::schedule(rxcpp::schedulers::schedulable const&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/schedulers/rx-currentthread.hpp:183:13
    #30 0xbc81b7 in std::enable_if<((detail::is_action_function<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>::value) || (is_subscription<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>::value)) && (!(is_schedulable<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>::value)), void>::type rxcpp::schedulers::worker::schedule<rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&>(rxcpp::detail::safe_subscriber<rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker>, rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-scheduler.hpp:808:12
    #31 0xbc787e in rxcpp::composite_subscription rxcpp::observable<long, rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker> >::detail_subscribe<rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> > >(rxcpp::subscriber<long, rxcpp::observer<long, rxcpp::detail::stateless_observer_tag, rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5, void, void> >) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:551:52
    #32 0xbb1eba in rxcpp::composite_subscription rxcpp::observable<long, rxcpp::operators::detail::subscribe_on<long, rxcpp::observable<long, rxcpp::sources::detail::interval<rxcpp::identity_one_worker> >, rxcpp::observe_on_one_worker> >::subscribe<rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5>(rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test()::$_5&&) const /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/rmf_rxcpp/RxCpp-4.1.0/Rx/v2/src/rxcpp/rx-observable.hpp:671:16
    #33 0xbad48a in rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0::test() /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/test/phases/test_DoorOpen.cpp:184:10
    #34 0xc032f2 in Catch::TestInvokerAsMethod<rmf_fleet_adapter::phases::test::(anonymous namespace)::____C_A_T_C_H____T_E_S_T____0>::invoke() const /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:821:5
    #35 0x95fe57 in Catch::TestCase::invoke() const /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:13103:9
    #36 0x95fca4 in Catch::RunContext::invokeActiveTestCase() /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:11760:21
    #37 0x95b83d in Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:11730:7
    #38 0x959355 in Catch::RunContext::runTest(Catch::TestCase const&) /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:11462:5
    #39 0x965dde in Catch::(anonymous namespace)::runTests(std::shared_ptr<Catch::Config> const&) /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:12088:25
    #40 0x96496e in Catch::Session::runInternal() /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:12324:19
    #41 0x9643d5 in Catch::Session::run() /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:12272:18
    #42 0x9e6f21 in int Catch::Session::run<char>(int, char const* const*) /home/arjo/rmf_ws/install/rmf_utils/include/rmf_utils/catch.hpp:11980:20
    #43 0x9991dd in main /home/arjo/rmf_ws/src/rmf/rmf_ros2/rmf_fleet_adapter/test/main.cpp:33:39
    #44 0x7f769af5b0b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16

SUMMARY: AddressSanitizer: heap-use-after-free (/home/arjo/rmf_ws/build/rmf_fleet_adapter/test_rmf_fleet_adapter+0x900a69) in __asan_memcpy
Shadow bytes around the buggy address:
  0x0c1a7ffff7f0: fd fa fa fa fa fa fa fa fa fa fd fd fd fd fd fd
  0x0c1a7ffff800: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c1a7ffff810: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c1a7ffff820: fd fd fd fd fd fa fa fa fa fa fa fa fa fa 00 00
  0x0c1a7ffff830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c1a7ffff840: fa fa fa fa fa fa fa fa[fd]fd fd fd fd fd fd fd
  0x0c1a7ffff850: fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa
  0x0c1a7ffff860: fa fa 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c1a7ffff870: 00 00 00 00 fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1a7ffff880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1a7ffff890: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==1958562==ABORTING

Steps to reproduce the bug

To reproduce run:

colcon build --mixin asan-gcc  --cmake-args -DCMAKE_BUILD_TYPE=Debug --packages-up-to rmf_fleet_adapter
colcon test --packages-select rmf_fleet_adapter

Additional information

The relevant code chunk where this happens is located on this line.

For the short term we caqn ignore this issue. However, if my understanding is correct this issue can lead to undefined behaviour within rmf.

There is a potentially related issue upstream in RxCpp that has not been touched for 3 years: ReactiveX/RxCpp#436.