EricssonResearch / EricssonResearch/scream
SIGSEGV when receving rtcp with not known ssrc
- Dominant language
- Shell
- Stars
- 217
- Forks
- 69
- PR merge metrics
- No merged PRs in 30d
Description
I've got this Segmentation Fault, when I restart my sender fast and keep the receiver running.
Then the receiver sending feedback with for a SSRC from the old session.
#0 0x00007ffff2dad58c in ScreamTx::Stream::isRtpQueueDiscard (this=0x0) at ScreamTx.cpp:2008
#1 0x00007ffff2dac990 in ScreamTx::Stream::getTargetBitrate (this=0x0) at ScreamTx.cpp:1749
#2 0x00007ffff2da987f in ScreamTx::getTargetBitrate (this=0x5555559aa330, ssrc=3462544249) at ScreamTx.cpp:885
#3 0x00007ffff2da6327 in on_receiving_rtcp (session=0x555555bc61a0, buffer=0x7fffdc0279a0, early=1436201072, object=0x7ffff0eec030)
at gstgscreamtx.cpp:307
My hotfix is to return 0 in ScreamTx::Stream::getTargetBitrate if I couldn't find the stream by SSRC.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at the RTCP handling path in gstgscreamtx.cpp:307 and follow ScreamTx.cpp:885 into getTargetBitrate and the stream lookup, using the reported ScreamTx.cpp lines as the initial context. Reproduce the rapid sender restart with feedback for the old SSRC, then verify that stale-SSRC RTCP no longer causes a segmentation fault.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100