Universal_Robots_Client_Library icon indicating copy to clipboard operation
Universal_Robots_Client_Library copied to clipboard

Possible race condition when shutting down

Open urfeex opened this issue 1 year ago • 0 comments

During testing #229 I noticed that at least on Windows a lot of the integration tests segfault, when shutting down. I traced it down that the access to the RTDE's DataPackage's static g_type_list gets destructed before the communication is shutdown / the other objects are destroyed. This leads to a segfault in https://github.com/UniversalRobots/Universal_Robots_Client_Library/blob/44b650f81b343c65875de49cad5579d4f735ed44/src/rtde/data_package.cpp#L590

which is executed for an incoming package while the type list doesn't exist anymore.

To reproduce this, e.g. run the SplineInterpolation integration tests. The tests may succeed, but when shutting down the tests it segfaults

Possible mitigation:

  • destroying the RobotWrapper object in TearDownTestSuite seems to bypass that problem. That seems like a workaround, however.
  • Have the lookup table in another form than the static member map
  • Refactor dataflow. Why do we need to create the package structure for every parsing operation? It should be enough to initialize the structure once and re-use that package.

urfeex avatar Feb 24 '25 13:02 urfeex