Before executing req.WaitForResponse(), it's possible that this request has been TakeRequested and SendResponseed in ros executor thread, and the condition variable waiting in req.WaitForResponse() totally missing the notify and blocked forever.
To increase the possiblity of reproducing this problem, add something like std::this_thread::sleep_for(std::chrono::milliseconds(5)); before req.WaitForResponse().
rmw_ecal/rmw_ecal_shared_cpp/src/internal/service.hpp
Line 118 in 53b952e
Before executing
req.WaitForResponse(), it's possible that this request has beenTakeRequested andSendResponseed in ros executor thread, and the condition variable waiting inreq.WaitForResponse()totally missing the notify and blocked forever.To increase the possiblity of reproducing this problem, add something like
std::this_thread::sleep_for(std::chrono::milliseconds(5));beforereq.WaitForResponse().