GNOME Bugzilla – Bug 711131
rtpjitterbuffer: SIGSEGV when do-retransmission=true and a lot of packets are dopped
Last modified: 2013-11-11 11:06:28 UTC
* steps to reproduce: gst-launch-1.0 videotestsrc ! rtpvrawpay ! identity drop-probability=0.7 ! rtpjitterbuffer do-retransmission=true ! rtpvrawdepay ! fakesink
* back trace:
Program received signal SIGSEGV, Segmentation fault.
Created attachment 258543 [details]
gdb "thread apply all bt" log
Created attachment 258544 [details]
Created attachment 258990 [details] [review]
Patch fixing the issue
The crash looks reasonable, given that the code unlocks the jitterbuffer lock while processing the timer... the crash happens right after locking again, where timer is eventually pointing to invalid memory. This patch should fix it (gst-launch line works now, unit tests still pass).
Your patch fixes the problem here too, nice!
Author: George Kiagiadakis <firstname.lastname@example.org>
Date: Tue Nov 5 10:48:33 2013 +0200
rtpjitterbuffer: fix crash when do-retransmission=true and a lot of buffers are lost
The problem here was that the jitterbuffer lock was unlocked to push
the event, but that caused another thread to remove the timer currently
being processed, probably because the amount of rtx events
(and therefore timers) was getting too high. The solution is to
unlock and push the event only after timer processing has finished.