Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Unbounded per-SSRC RTCP statistics history causes linear memory growth

Closed
#2,174 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
c
Domain
performance

Research direction

Read ssrc_receiver_report() in daemon/ssrc.c: it allocates an ssrc_stats_block (L411-418) and appends it to other_e->stats_blocks after only rejecting samples under a second apart (L433-445), and the list is freed only when the SSRC entry is destroyed (L51-58); master repeats this near L2453-2472. Decide a bound (sample count or age) and enforce it at append time, keeping the newest entries. Done means RTCP/MOS memory stays flat across a long call; look for existing ssrc/statistics tests before changing the list.

Written by the indexing model from the issue text.

Description

bug
rtpengine version the issue has been seen with

12.5.1.41-1~bpo13+1

Used distribution and its version

trixie/sid

Linux kernel version used

6.6.48-flatcar

CPU architecture issue was seen on (see uname -m)

x86_64

Expected behaviour you didn't see

Memory used for RTCP/MOS statistics should remain bounded independently of call duration

Unexpected behaviour you saw

For every accepted RTCP Receiver Report, ssrc_receiver_report() allocates an ssrc_stats_block and appends it to other_e->stats_blocks.
The implementation:

--final-timeout=SECS provides an indirect bound by deleting the call after a fixed time regardless of continuing RTP/RTCP, which also releases the SSRC history.

Steps to reproduce the problem

No response

Additional program output to the terminal or logs illustrating the issue

Anything else?

No response

Dominant language
Perl
Stars
992
Forks
459
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from sipwise/rtpengine

All issues in sipwise/rtpengine

Similar issues

More Perl issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.