How-to-reproduce code for this issue: aiortc/aiortc#1091
Requirements:
- Webcam accessible at
/dev/video0
- docker 20.10+
- python3.11+.
- Clone this:
git clone https://gist.github.com/20411acc86ecca39d18ebfc2060bb8c5.git aiortc-memleak
cd aiortc-memleak
- Build and run the application using
./start.bash
. It will build the application in a container (Ubuntu 24, same happens with Ubuntu 22).
./start.bash
Notice it will use av==11.0.0
, but av==12.0.0
can also be used, see the Dockerfile.
See aiortc/aiortc#1088.
Same results with both versions av==11.0.0
and av==12.0.0
.
- Open a browser window, and navigate to http://localhost:3000/. Close it, open it again,
chromium http://localhost:3000/
# Close the browser window or tab
chromium http://localhost:3000/
(Same results with Firefox)
- In a different window, run the memory tracer:
./ram_monitor.py
. This is an example output:
$ ./ram_monitor.py
aiortc: 63.36; max:63.36, last_delta:63.36 Mb <- Server started
aiortc: 63.36; max:63.36, last_delta:63.36 Mb
aiortc: 63.36; max:63.36, last_delta:63.36 Mb
aiortc: 63.36; max:63.36, last_delta:63.36 Mb
aiortc: 101.56; max:101.56, last_delta:38.20 Mb <- Opened one browser window (1 browser window opened)
aiortc: 98.66; max:101.56, last_delta:38.20 Mb
aiortc: 94.23; max:101.56, last_delta:38.20 Mb
aiortc: 97.11; max:101.56, last_delta:38.20 Mb
aiortc: 94.46; max:101.56, last_delta:38.20 Mb
aiortc: 93.96; max:101.56, last_delta:38.20 Mb <- Closed browser window, this seems to be important
aiortc: 94.72; max:101.56, last_delta:38.20 Mb (0 browser windows opened)
aiortc: 96.80; max:101.56, last_delta:38.20 Mb
aiortc: 124.29; max:124.29, last_delta:22.72 Mb <- Opened one browser window (1 browser window opened)
aiortc: 124.15; max:124.29, last_delta:22.72 Mb <- No mouse/keyboard actions from here on
aiortc: 124.36; max:124.36, last_delta:0.07 Mb
aiortc: 126.22; max:126.22, last_delta:1.87 Mb
aiortc: 126.05; max:126.22, last_delta:1.87 Mb
aiortc: 124.65; max:126.22, last_delta:1.87 Mb
aiortc: 126.37; max:126.37, last_delta:0.14 Mb
aiortc: 125.99; max:126.37, last_delta:0.14 Mb
aiortc: 126.39; max:126.39, last_delta:0.02 Mb
aiortc: 123.27; max:126.39, last_delta:0.02 Mb
aiortc: 119.70; max:126.39, last_delta:0.02 Mb
aiortc: 119.83; max:126.39, last_delta:0.02 Mb
aiortc: 124.59; max:126.39, last_delta:0.02 Mb
aiortc: 126.18; max:126.39, last_delta:0.02 Mb
aiortc: 126.23; max:126.39, last_delta:0.02 Mb
aiortc: 126.36; max:126.39, last_delta:0.02 Mb
aiortc: 124.78; max:126.39, last_delta:0.02 Mb
aiortc: 127.43; max:127.43, last_delta:1.04 Mb
aiortc: 125.82; max:127.43, last_delta:1.04 Mb
aiortc: 120.86; max:127.43, last_delta:1.04 Mb
aiortc: 119.93; max:127.43, last_delta:1.04 Mb
aiortc: 119.82; max:127.43, last_delta:1.04 Mb
aiortc: 125.95; max:127.43, last_delta:1.04 Mb
aiortc: 120.29; max:127.43, last_delta:1.04 Mb
aiortc: 126.14; max:127.43, last_delta:1.04 Mb
aiortc: 126.02; max:127.43, last_delta:1.04 Mb
aiortc: 125.74; max:127.43, last_delta:1.04 Mb
aiortc: 126.10; max:127.43, last_delta:1.04 Mb
aiortc: 125.96; max:127.43, last_delta:1.04 Mb
aiortc: 126.09; max:127.43, last_delta:1.04 Mb
aiortc: 115.25; max:127.43, last_delta:1.04 Mb
aiortc: 127.70; max:127.70, last_delta:0.27 Mb
aiortc: 150.23; max:150.23, last_delta:22.54 Mb <- Memory leak starts with no reason. Fan blows a bit
aiortc: 173.70; max:173.70, last_delta:23.46 Mb browser window response is fast, consider there is ONLY
aiortc: 195.98; max:195.98, last_delta:22.29 Mb one browser window being displayed
aiortc: 218.69; max:218.69, last_delta:22.70 Mb
aiortc: 241.56; max:241.56, last_delta:22.88 Mb
aiortc: 264.44; max:264.44, last_delta:22.88 Mb
aiortc: 286.98; max:286.98, last_delta:22.54 Mb
aiortc: 310.10; max:310.10, last_delta:23.12 Mb
aiortc: 332.96; max:332.96, last_delta:22.87 Mb
aiortc: 355.93; max:355.93, last_delta:22.97 Mb
aiortc: 378.55; max:378.55, last_delta:22.62 Mb
aiortc: 401.27; max:401.27, last_delta:22.72 Mb
aiortc: 423.98; max:423.98, last_delta:22.71 Mb
aiortc: 447.43; max:447.43, last_delta:23.45 Mb
aiortc: 469.98; max:469.98, last_delta:22.55 Mb
aiortc: 492.85; max:492.85, last_delta:22.87 Mb
aiortc: 515.55; max:515.55, last_delta:22.71 Mb
aiortc: 538.34; max:538.34, last_delta:22.79 Mb
aiortc: 561.22; max:561.22, last_delta:22.88 Mb
aiortc: 584.44; max:584.44, last_delta:23.21 Mb
aiortc: 607.14; max:607.14, last_delta:22.70 Mb
aiortc: 629.81; max:629.81, last_delta:22.67 Mb
aiortc: 652.85; max:652.85, last_delta:23.04 Mb
aiortc: 675.30; max:675.30, last_delta:22.45 Mb
aiortc: 698.05; max:698.05, last_delta:22.75 Mb
aiortc: 721.34; max:721.34, last_delta:23.29 Mb
aiortc: 744.23; max:744.23, last_delta:22.89 Mb
... (grows until hanging up the PC)