Skip to content

Possible race condition when shutting down #274

Open
@urfeex

Description

@urfeex

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

if (g_type_list.find(item) != g_type_list.end())

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions