New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GStreamer CI reporting memory leak while using srt #2867
Comments
A thread local object should be freed once the thread finishes its execution. |
Thanks for response! I am not sure ... I am trying to find it, I cannot reproduce locally, we see it in the CI of the GStreamer project, I think it is the fedora default build (libsrt version 1.4.2 in this run). Link to CI run here: https://gitlab.freedesktop.org/bilboed/gstreamer/-/jobs/54795504 |
The fedora build spec here: https://src.fedoraproject.org/rpms/srt/blob/f37/f/srt.spec I do not see |
Better to use the latest version. The default on Linux machines is OFF (POSIX). |
I understand that but this is a CI for the gstreamer project using the upstream version. So, in your mind is there something in the GStreamer code that could be triggering this? Something we could be omitting? Or does it feel more like some race in termination? |
trying to figure out if I should add a suppression for the valgrind detection or not |
The srt unittest test_src_listener_sink_call will sometimes fail under valgrind with the following splat: Memcheck, a memory error detector Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info Parent PID: 14579 HEAP SUMMARY: in use at exit: 799,848 bytes in 2,182 blocks total heap usage: 64,090 allocs, 61,908 frees, 37,891,032 bytes allocated 120 bytes in 1 blocks are definitely lost in loss record 1,563 of 1,681 at 0x4842FF5: operator new(unsigned long) (vg_replace_malloc.c:422) by 0x6031E29: srt::sync::SetThreadLocalError(CUDTException const&) (sync_posix.cpp:461) by 0x5FCD77E: CUDT::epoll_wait(int, std::set<int, std::less<int>, std::allocator<int> >*, std::set<int, std::less<int>, std::allocator<int> >*, long, std::set<int, std::less<int>, std::allocator<int> >*, std::set<int, std::less<int>, std::allocator<int> >*) [clone .cold] (api.cpp:3796) by 0x5FE2F79: UDT::epoll_wait2(int, int*, int*, int*, int*, long, int*, int*, int*, int*) (api.cpp:4277) by 0x5F0C626: gst_srt_object_read (gstsrtobject.c:1569) by 0x5F0F978: gst_srt_src_fill (gstsrtsrc.c:180) by 0x5F5A2A1: gst_base_src_default_create (gstbasesrc.c:1620) by 0x5F5C9AE: gst_base_src_get_range (gstbasesrc.c:2630) by 0x5F5EF5A: gst_base_src_loop (gstbasesrc.c:2959) by 0x4918B13: gst_task_func (gsttask.c:399) by 0x4A60B33: g_thread_pool_thread_proxy.lto_priv.0 (gthreadpool.c:354) by 0x4A5DC41: g_thread_proxy (gthread.c:826) by 0x4F532A4: start_thread (pthread_create.c:481) by 0x4C71322: clone (clone.S:95) An issue has been started against libsrt here: Haivision/srt#2867 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6098>
I have not managed to reproduce this myself, but others reported seeing it on Debian and v1.5.2. |
Describe the bug
When running the gstreamer test-suite under valgrind a leak is reported, see here:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5440
I wonder if the GStreamer code (or the srt c api) is missing to clean something up or if this is expected?
The trace is here:
Code path in GStreamer:
Desktop (please provide the following information):
Linux using the C api
The text was updated successfully, but these errors were encountered: