1

I created a tool using Opensplice DDS 6.7 to create a reader, wait for the callback to execute on the read message, and print the value of the message. We use Google Protobuf for our message structures. After printing the value of the message and executing return 0;, the program takes nearly 5 seconds to actually terminate.

Stepping through GDB shows many calls to destructors in Protobuf and thread joins from opensplice. Is there a unix tool or GDB tool to analyze wall clock execution time of threads/functions or number of times a function is called to help narrow down which library, or the wrapper, is causing the hang on destruction?

Bobby Tables
  • 191
  • 2
  • 15

1 Answers1

0

Strace was the tool I was looking for. Helped identify what was happening during destruction to reveal one of the threads for opensplice was sleeping for ~5 seconds before terminating. Eventually found the issue was using the system opensplice config rather than the one setup for the application. After switching which opensplice config was used, the program terminates quickly and gracefully.

Bobby Tables
  • 191
  • 2
  • 15