The serial communications thread in mitkNDITrackingDevice is throwing exceptions that are not handled in ThreadStartTracking. This ends up with a call to terminate() and a crash of the application.
A try/catch block in ThreadStartTracking and a std::exception_ptr in mitkNDITrackingDevice so the main thread can access to the exception thrown in the spawned thread context, and the spawned thread exits cleanly its main function.