]> git.vomp.tv Git - vompclient.git/commit - dvbsubtitles.h
Fix segfault when using subtitles
authorChris Tallon <chris@vomp.tv>
Thu, 30 Mar 2017 17:20:45 +0000 (18:20 +0100)
committerChris Tallon <chris@vomp.tv>
Thu, 30 Mar 2017 17:20:45 +0000 (18:20 +0100)
commitfbf05b8793e85f76f79eed1a0d130217cb53ff55
treecd37963c729e82e8ec28885fc8af5ecd2d7e5755
parent8899a7d78d73df7d22d0dfc154a9ad5231d37d6e
Fix segfault when using subtitles

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.
dvbsubtitles.cc
dvbsubtitles.h