ossrs / srs

SRS is a simple, high-efficiency, real-time video server supporting RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH, and GB28181.
https://ossrs.io
MIT License
24.86k stars 5.29k forks source link

"./srs -t -c conf/config_file" -> Memory Leak #3798

Closed laurfb closed 8 months ago

laurfb commented 10 months ago

Hi. Minor error - memory leak in checking config srs file (with -t -c options) from srs_protocol_utility.cpp. SRS vesion - 6.0.75(Bee), running in docker (v4.22.1, 4GB memory, 2 processors allocated)

Logs:

cd /usr/local/srs/objs ./srs -t -c /usr/local/srs/conf/conf_me.conf [2023-09-09 13:37:41.591][INFO][29][q04089o4] XCORE-SRS/6.0.75(Bee) [2023-09-09 13:37:41.591][INFO][29][q04089o4] config parse complete [2023-09-09 13:37:41.591][INFO][29][q04089o4] srs checking config... [2023-09-09 13:37:41.592][INFO][29][q04089o4] ips, iface[0] eth0 ipv4 0x11043 172.17.0.2 [2023-09-09 13:37:41.592][INFO][29][q04089o4] devices, intranet eth0 172.17.0.2 [2023-09-09 13:37:41.592][WARN][29][q04089o4][2] stats network use index=0, ip=172.17.0.2, ifname=eth0 [2023-09-09 13:37:41.592][WARN][29][q04089o4][2] stats disk list: sda sdb xvda xvdb [2023-09-09 13:37:41.592][INFO][29][q04089o4] write log to console [2023-09-09 13:37:41.592][INFO][29][q04089o4] the config file /usr/local/srs/conf/conf_me.conf syntax is ok [2023-09-09 13:37:41.592][INFO][29][q04089o4] config file /usr/local/srs/conf/conf_me.conf test is successful

================================================================= ==29==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 72 byte(s) in 1 object(s) allocated from:

0 0x55e400e80c87 in operator new(unsigned long) (/usr/local/srs/objs/srs+0x4d3c87)

#1 0x55e401060550 in discover_network_iface(ifaddrs*, std::vector<SrsIPAddress*, std::allocator<SrsIPAddress*> >&, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, bool, bool) src/protocol/srs_protocol_utility.cpp:702
#2 0x55e401061220 in retrieve_local_ips() src/protocol/srs_protocol_utility.cpp:759
#3 0x55e401061cea in srs_get_local_ips() src/protocol/srs_protocol_utility.cpp:816
#4 0x55e4011eda51 in SrsConfig::check_normal_config() src/app/srs_app_config.cpp:2424
#5 0x55e4011ea9db in SrsConfig::check_config() src/app/srs_app_config.cpp:2241
#6 0x55e4011e5d3e in SrsConfig::parse_options(int, char**) src/app/srs_app_config.cpp:1909
#7 0x55e40157c1f0 in do_main(int, char**, char**) src/main/srs_main_server.cpp:142
#8 0x55e40157cfd7 in main src/main/srs_main_server.cpp:256
#9 0x7f2a0febea8f  (/lib/x86_64-linux-gnu/libc.so.6+0x23a8f)

SUMMARY: AddressSanitizer: 72 byte(s) leaked in 1 allocation(s).

conf_me.conf file

listen 1935; max_connections 1000; daemon off; srs_log_tank console;

srs_log_level info;

http_api { enabled on; listen 1985; crossdomain on;

https {
    enabled on;
    listen  1990;
    key     ./conf/server.key;
    cert    ./conf/server.crt;
}

}

http_server { enabled on; listen 8080; crossdomain on; dir ./objs/nginx/html; https { enabled on; listen 8088; key ./conf/server.key; cert ./conf/server.crt; } }

srt_server { enabled on; listen 10080; connect_timeout 1000; #4000; latency 250; tsbpdmode on; tlpktdrop on; sendbuf 2000000; recvbuf 2000000; }

rtc_server { enabled off; listen 8000; # UDP port candidate $CANDIDATE; }

vhost defaultVhost { srt { enabled on; srt_to_rtmp off; }

hls {
    enabled             off;
    hls_fragment        0.2;
    hls_window          2;
    hls_wait_keyframe   off;
    hls_path            ./objs/nginx/html;
    hls_m3u8_file       [app]/[stream].m3u8;
    hls_ts_file         [app]/[stream]-[seq].ts;
}

rtc {
    enabled     off;
    #nack on;
    #twcc on;
    #stun_timeout 30;
    #dtls_role passive;
    #rtmp_to_rtc on;
    rtc_to_rtmp on;
}

http_remux {
    #enabled    on;
    #mount  [vhost]/[app]/[stream].flv;
    #mount  [vhost]/[app]/[stream].m3u8;
    #mount  [vhost]/[app]/[stream].ts;
}

play {
    gop_cache       on;
    queue_length    10;
    mw_latency      250;
    #mr_latency     250;
    mw_msgs         4;
}
publish {
    mr              off;
}

}

stats { network 0; disk sda sdb xvda xvdb; }

regards, Laur