Skip to content

getting "navigation_task_ is nullptr" error when calling "navigation_handler_->setPaused();" while action is running.

I am getting "navigation_task_ is nullptr" error when calling "navigation_handler_->setPaused();". It seems to be related to when an action is currently running.

I have tracked it down to this function in the scheduler.cpp file. But I am still unsure exactly why navigation_task_ becomes nullptr.

void Scheduler::navigationTransition(NavigationTransition transition, std::optional<Lock> lock) {
  auto e_lock = this->ensureLock(std::move(lock));

  getOrderLogger()->debug("Scheduler::navigationTransition(type={})", int(transition.type()));

  if (this->navigation_task_ == nullptr) {
    throw vda5050pp::VDA5050PPNullPointer(MK_EX_CONTEXT("navigation_task_ is nullptr"));
 }

  this->navigation_task_->transition(transition);

  this->update(std::move(e_lock));
}

This is the order it was running.

{"headerId":139,"timestamp":"2024-09-12T12:15:46.405312","version":"2.0.0","manufacturer":"SomeCompany","serialNumber":"HIRCUS-0045","orderId":"91fbd157-9c07-47c3-a47d-90478b3013a4-n2","orderUpdateId":0,"nodes":[{"nodeId":"91fbd157-9c07-47c3-a47d-90478b3013a4-n2-s0","sequenceId":0,"released":true,"actions":[{"actionId":"91fbd157-9c07-47c3-a47d-90478b3013a4-n2-s0-n2","actionType":"startCharging","blockingType":"NONE","actionParameters":[{"key":"frameId","value":4}]}],"nodePosition":{"x":3.0919735431671143,"y":-8.45749282836914,"mapId":"floor 0","theta":0.08953819423913956}}],"edges":[]}

And here is the fill error that i get:

[2024-09-12 14:18:51.623] [order] [error] Scheduler threw an exception: VDA5050PPNullPointer @ vda5050pp::core::order::Scheduler::<not demanglable>(): navigation_task_ is nullptr
  <no additional context>
StackTrace:
  vda5050pp::core::common::stacktrace(unsigned long)+0x4
  vda5050pp::VDA5050PPErrorContext vda5050pp::core::common::mkExceptionContext<vda5050pp::core::order::Scheduler&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)+0x9
  vda5050pp::core::order::Scheduler::navigationTransition(vda5050pp::core::order::NavigationTransition, std::optional<std::unique_lock<std::mutex> >)+0x1b
  vda5050pp::core::order::OrderEventHandler::handleNavigationControl(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)+0x5c
  void std::__invoke_impl<void, void (vda5050pp::core::order::OrderEventHandler::* const&)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>), vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(std::__invoke_memfun_deref, void (vda5050pp::core::order::OrderEventHandler::* const&)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>), vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0xa
  std::__invoke_result<void (vda5050pp::core::order::OrderEventHandler::* const&)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>), vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >::type std::__invoke<void (vda5050pp::core::order::OrderEventHandler::* const&)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>), vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(void (vda5050pp::core::order::OrderEventHandler::* const&)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>), vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x4
  decltype (std::__invoke((*this)._M_pmf, std::forward<vda5050pp::core::order::OrderEventHandler*&>({parm#1}), std::forward<std::shared_ptr<vda5050pp::events::NavigationStatusControl> >({parm#1}))) std::_Mem_fn_base<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>), true>::operator()<vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&) const+0x4
  void std::__invoke_impl<void, std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>&, vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(std::__invoke_other, std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>&, vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x4
  std::__invoke_result<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>&, vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >::type std::__invoke<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>&, vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>&, vda5050pp::core::order::OrderEventHandler*&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x4
  void std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>::__call<void, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&, 0ul, 1ul>(std::tuple<std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&>&&, std::_Index_tuple<0ul, 1ul>)+0x7
  void std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>::operator()<std::shared_ptr<vda5050pp::events::NavigationStatusControl>, void>(std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x3
  void std::__invoke_impl<void, std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(std::__invoke_other, std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x3
  std::enable_if<is_invocable_r_v<void, std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >, void>::type std::__invoke_r<void, std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>&, std::shared_ptr<vda5050pp::events::NavigationStatusControl> >(std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)>&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x3
  std::_Function_handler<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), std::_Bind<std::_Mem_fn<void (vda5050pp::core::order::OrderEventHandler::*)(std::shared_ptr<vda5050pp::events::NavigationStatusControl>)> (vda5050pp::core::order::OrderEventHandler*, std::_Placeholder<1>)> >::_M_invoke(std::_Any_data const&, std::shared_ptr<vda5050pp::events::NavigationStatusControl>&&)+0x3
  std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>::operator()(std::shared_ptr<vda5050pp::events::NavigationStatusControl>) const+0x5
  void eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void>::operator()<std::shared_ptr<vda5050pp::events::NavigationStatus> >(std::shared_ptr<vda5050pp::events::NavigationStatus>&&)+0x5
  void std::__invoke_impl<void, eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void>&, std::shared_ptr<vda5050pp::events::NavigationStatus> >(std::__invoke_other, eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void>&, std::shared_ptr<vda5050pp::events::NavigationStatus>&&)+0x3
  std::enable_if<is_invocable_r_v<void, eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void>&, std::shared_ptr<vda5050pp::events::NavigationStatus> >, void>::type std::__invoke_r<void, eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void>&, std::shared_ptr<vda5050pp::events::NavigationStatus> >(eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void>&, std::shared_ptr<vda5050pp::events::NavigationStatus>&&)+0x3
  std::_Function_handler<void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::ArgumentAdapter<std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>)>, void (std::shared_ptr<vda5050pp::events::NavigationStatusControl>), void> >::_M_invoke(std::_Any_data const&, std::shared_ptr<vda5050pp::events::NavigationStatus>&&)+0x3
  std::function<void (std::shared_ptr<vda5050pp::events::NavigationStatus>)>::operator()(std::shared_ptr<vda5050pp::events::NavigationStatus>) const+0x5
  eventpp::internal_::CallbackListBase<void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::DefaultPolicies>::operator()(std::shared_ptr<vda5050pp::events::NavigationStatus>) const+0x1a
  eventpp::internal_::EventDispatcherBase<vda5050pp::events::NavigationStatusType, void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::DefaultPolicies, eventpp::internal_::EventQueueBase<vda5050pp::events::NavigationStatusType, void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::DefaultPolicies> >::directDispatch(vda5050pp::events::NavigationStatusType const&, std::shared_ptr<vda5050pp::events::NavigationStatus>) const+0x9
  void eventpp::internal_::EventQueueBase<vda5050pp::events::NavigationStatusType, void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::DefaultPolicies>::doDispatchQueuedEvent<eventpp::internal_::EventQueueBase<vda5050pp::events::NavigationStatusType, void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::DefaultPolicies>::QueuedEvent_&, 0ul>(eventpp::internal_::EventQueueBase<vda5050pp::events::NavigationStatusType, void (std::shared_ptr<vda5050pp::events::NavigationStatus>), eventpp::DefaultPolicies>::QueuedEvent_&, eventpp::internal_::IndexSequence<0ul>)+0x5
  <not demanglable>+0xbf7e4
  vda5050pp::core::NavigationStatusManager::threadTask(vda5050pp::core::common::StopToken)+0x6
  void std::__invoke_impl<void, void (vda5050pp::core::NavigationStatusManager::* const&)(vda5050pp::core::common::StopToken) noexcept, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>(std::__invoke_memfun_deref, void (vda5050pp::core::NavigationStatusManager::* const&)(vda5050pp::core::common::StopToken) noexcept, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken&&)+0x9
  std::__invoke_result<void (vda5050pp::core::NavigationStatusManager::* const&)(vda5050pp::core::common::StopToken) noexcept, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>::type std::__invoke<void (vda5050pp::core::NavigationStatusManager::* const&)(vda5050pp::core::common::StopToken) noexcept, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>(void (vda5050pp::core::NavigationStatusManager::* const&)(vda5050pp::core::common::StopToken) noexcept, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken&&)+0x4
  decltype (std::__invoke((*this)._M_pmf, std::forward<vda5050pp::core::NavigationStatusManager*&>({parm#1}), std::forward<vda5050pp::core::common::StopToken>({parm#1}))) std::_Mem_fn_base<void (vda5050pp::core::NavigationStatusManager::*)(vda5050pp::core::common::StopToken) noexcept, true>::operator()<vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>(vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken&&) const+0x4
  void std::__invoke_impl<void, std::_Mem_fn<void (vda5050pp::core::NavigationStatusManager::*)(vda5050pp::core::common::StopToken) noexcept>&, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>(std::__invoke_other, std::_Mem_fn<void (vda5050pp::core::NavigationStatusManager::*)(vda5050pp::core::common::StopToken) noexcept>&, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken&&)+0x4
  std::__invoke_result<std::_Mem_fn<void (vda5050pp::core::NavigationStatusManager::*)(vda5050pp::core::common::StopToken) noexcept>&, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>::type std::__invoke<std::_Mem_fn<void (vda5050pp::core::NavigationStatusManager::*)(vda5050pp::core::common::StopToken) noexcept>&, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken>(std::_Mem_fn<void (vda5050pp::core::NavigationStatusManager::*)(vda5050pp::core::common::StopToken) noexcept>&, vda5050pp::core::NavigationStatusManager*&, vda5050pp::core::common::StopToken&&)+0x4

Please let me know if I should provide any more information on this