Describe the bug
Groot2Publisher can enter an infinite loop in certain failure scenarios (e.g., when an exception is thrown).
During destruction, active_server is set to false to stop the server loop. However, when server_thread.join() is called, active_server may be reset to true (depending on which line the server loop is currently executing), causing the server loop to continue running indefinitely and preventing the destructor from completing.
Describe the bug
Groot2Publishercan enter an infinite loop in certain failure scenarios (e.g., when an exception is thrown).During destruction,
active_serveris set tofalseto stop the server loop. However, whenserver_thread.join()is called,active_servermay be reset to true (depending on which line the server loop is currently executing), causing the server loop to continue running indefinitely and preventing the destructor from completing.