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.
+ Trace 232683
Thread 140737274791680 (LWP 6618)
Created attachment 258543 [details] gdb "thread apply all bt" log
Created attachment 258544 [details] valgrind log
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!
commit b81b2efa3e4905f11136930da5191b1ac033825e Author: George Kiagiadakis <george.kiagiadakis@collabora.com> 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. fixes https://bugzilla.gnome.org/show_bug.cgi?id=711131