The segfault occurs in pthread_exit which points at memory corruption...
The problem:
Play live/recording, switch subtitles on. No subtitle packets arrive from
the demuxer (a channel without subtitles or just a part of a programme with
no dialogue).
Navigate or stop (anything to switch from playing to stopped).
cTimeMs returns a small positive integer because it has never been
initialised with anything other than 0.
This value is negated inside an unsigned creating a very large number
for "wakeup" which causes targetTime to overflow to
a negative number. This is supplied to pthread_cond_timedwait which
causes the spin.
Something about this situation causes pthread_exit to segfault
when DVBSubtitles->threadStop() is called.
Also fixed missing else brackets in cTimeMs constructor.