memory leak when reconnection to camera using gstreamer on TX1 platform
oona
oonamao at tencent.com
Wed Dec 12 02:44:30 UTC 2018
Hi,
Thanks for your reply.
I refactor my application, limiting the appsink as:
gst_app_sink_set_emit_signals((GstAppSink*)g_appsink, true);
gst_app_sink_set_drop((GstAppSink*)g_appsink, true);
gst_app_sink_set_max_buffers((GstAppSink*)g_appsink, 1);
unrefing gstSample in time like function NewFrame() in: github
<https://github.com/rticommunity/rticonnextdds-videodemo-android/blob/master/jni/ConnextGstreamer.cxx>
.
Now, the memory does not increase for each reconnection. However, for the
first time, the memory will rise from 80M to 120M, later it is floating
around 120M.
Moreover, I use valgrind to test the memory leakage, the report is:
==813== LEAK SUMMARY:
==813== definitely lost: 20,854 bytes in 49 blocks
==813== indirectly lost: 5,281 bytes in 80 blocks
==813== possibly lost: 8,572 bytes in 73 blocks
==813== still reachable: 135,825,332 bytes in 23,583 blocks
==813== of which reachable via heuristic:
==813== stdstring : 97 bytes in 1 blocks
==813== length64 : 2,208 bytes in 51
blocks
==813== newarray : 2,352 bytes in 36
blocks
==813== suppressed: 0 bytes in 0 blocks
without "definitely" details in the report, we guess that the memory leakage
happens in the gstreamer lib.
Could you help us? thanks a lot!
Nicolas Dufresne-5 wrote
> Le jeudi 29 novembre 2018 à 03:59 +0000, oonamao(毛江云) a écrit :
>> Hi all,
>>
>> This is Oona, a junior software engineer. I send this email to ask your
>> help about my gstreamer application:
>> Recently, I met a memory leak problem on TX1 platform, when my gstreamer
>> application tried to reconnect to the camera by rtsp.
>> Moreover, the tegra I’m using is:
>> # R28 (release), REVISION: 2.0, GCID: 10567845, BOARD: t210ref, EABI:
>> aarch64, DATE: Fri Mar 2 04:58:16 UTC 2018
>> Gstreamer is:
>> gst-inspect-1.0 version 1.8.1
>> GStreamer 1.8.3
>> https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
>
> This is relatively old, if it's an upstream bug, it is likely fixed.
>
>>
>> Problem Details:
>> 1. The application will call gst_init() at the very first, then
>> builds pipleline as “rtspsrc
>> location=rtsp://${usrname}:${pwd}@${ip}:${port}/cam/realmonitor?channel=1&subtype=0
>> protocols=tcp ! rtph264depay ! h264parse ! omxh264dec ! video/x-raw,
>> format=NV12 ! appsink sync=false async=false name=appsink1”. As expected,
>> it gets data from camera. By `top` commands, I can see its
>> occupied-memory is ~108M;
>> (disable ${ip})
>
> Though, most of these report are related to miss-used of appsink.
> appsink is non leak and have inifit queues by default. Make sure you
> limite that queue and pop and unref buffers properly.
>
>> 2. Of course, the application fails to get data. And the application
>> is trying to reconnect the pipeline periodically. It is still occupied
>> ~108M;
>> (enable ${ip})
>> 3. The application succeeds to get video again. However, the memory
>> rises to ~180M!
>> After trying 2,3 for times, I finds that: the memory will increase by
>> -80M each time when it succeed in reconnection.
>>
>> The following code segment is the reconnection (first close() then
>> open()). I think I have unref all the resources in close(), in addition,
>> I unref gst-sample, gst-message in time.
>> ```
>> int GSTCameraMini::open() {
>> this->m_camera_state = CAM_INIT;
>> this -> build_pipeline();
>> gst_element_set_state(this -> pipeline, GST_STATE_PLAYING);
>> return 0;
>> }
>>
>> int GSTCameraMini::close() {
>> this->m_camera_state = CAM_OFFLINE;
>> gst_element_set_state(this -> pipeline, GST_STATE_NULL);
>> // unref appsink
>> gst_object_unref(G_OBJECT(this -> appsink));
>> // unref bus
>> gst_object_unref(G_OBJECT(this -> bus));
>> // unref pipeline
>> gst_object_unref(G_OBJECT(this -> pipeline));
>> return 0;
>> }
>> ```
>> I have no idea where goes wrong, and this problem makes me headache for a
>> long time. It is a bug from gstreamer or other?
>> Sincerely looking forward to your reply.
>>
>> Best & Regards,
>> Oona
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>>
> gstreamer-devel at .freedesktop
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at .freedesktop
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> signature.asc (201 bytes)
> <http://gstreamer-devel.966125.n4.nabble.com/attachment/4689075/0/signature.asc>
--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
More information about the gstreamer-devel
mailing list