When using the NVCodec plugin of gstream for encoding and decoding processing, there was a crash issue during pipeline deletion.
Calling gst_ Set_ When in state (GST STATE_NULL), gst will call the destruction interface of the codec, causing a crash issue. The crash stack appears in/nvidia/lib/libnvcuvid. so. 1, and a segment error signal 11 is received.
It’s ok on X86 but not ok on ARM. The driver version is 525.105.17 for Linux aarch64.
Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) • DeepStream Version • JetPack Version (valid for Jetson only) • TensorRT Version • NVIDIA GPU Driver Version (valid for GPU only) • Issue Type( questions, new requirements, bugs) • How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing) • Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)
ARM means the operating system is linux aarch64. The specific crash stack is as follows::
Thread received signal SIGSEGV,Segmentation fault.
#0 0x0000ffff53b35cdc in ?? () from /usr/local/nvidia/lib/libnvcuvid.so.1 #1 0x0000ffff53b37a60 in ?? () from /usr/local/nvidia/lib/libnvcuvid.so.1 #2 0x0000ffff53a47130 in ?? () from /usr/local/nvidia/lib/libnvcuvid.so.1 #3 0x0000ffff53a32e60 in ?? () from /usr/local/nvidia/lib/libnvcuvid.so.1 #4 0x0000ffff53a9e0d0 in ?? () from /usr/local/nvidia/lib/libnvcuvid.so.1 #5 0x0000ffff53a9e2dc in ?? () from /usr/local/nvidia/lib/libnvcuvid.so.1 #6 0x0000ffff54175f2c in ?? () from /usr/local/nvidia/lib/libnvidia-encode.so.1 #7 0x0000ffff54178078 in ?? () from /usr/local/nvidia/lib/libnvidia-encode.so.1 #8 0x0000ffff541871c8 in ?? () from /usr/local/nvidia/lib/libnvidia-encode.so.1 #9 0x0000ffffbb1f0f14 in gst_nv_base_enc_close (enc=0xaaab50e91c30) at …/sys/nvcodec/gstnvbaseenc.c:1071 #11 0x0000ffffbb2ca5a8 in gst_element_change_state (element=element@entry=0xaaab50e91c30, transition=transition@entry=GST_STATE_CHANGE_READY_TO_NULL) at …/gst/gstelement.c:3083 #12 0x0000ffffbb2cad38 in gst_element_set_state_func (element=0xaaab50e91c30, state=) at …/gst/gstelement.c:3037 #13 0x0000ffffbb29cc74 in gst_bin_element_set_state (next=GST_STATE_NULL, current=43690, start_time=281473822680664, base_time=281456263748288, element=0xaaab50e91c30,
bin=0xaaab7311e520) at …/gst/gstbin.c:2581 #14 gst_bin_change_state_func (element=0xaaab7311e520, transition=65535) at …/gst/gstbin.c:2923 #16 0x0000ffffbb2ca5a8 in gst_element_change_state (element=element@entry=0xaaab7311e520, transition=GST_STATE_CHANGE_READY_TO_NULL) at …/gst/gstelement.c:3083 #17 0x0000ffffbb2cb080 in gst_element_continue_state (element=element@entry=0xaaab7311e520, ret=ret@entry=GST_STATE_CHANGE_SUCCESS) at …/gst/gstelement.c:2791 #18 0x0000ffffbb2ca8e4 in gst_element_change_state (element=element@entry=0xaaab7311e520, transition=) at …/gst/gstelement.c:3122 #19 0x0000ffffbb2cb080 in gst_element_continue_state (element=element@entry=0xaaab7311e520, ret=ret@entry=GST_STATE_CHANGE_SUCCESS) at …/gst/gstelement.c:2791 #20 0x0000ffffbb2ca8e4 in gst_element_change_state (element=element@entry=0xaaab7311e520, transition=transition@entry=GST_STATE_CHANGE_PLAYING_TO_PAUSED)
at …/gst/gstelement.c:3122 #21 0x0000ffffbb2cad38 in gst_element_set_state_func (element=0xaaab7311e520, state=) at …/gst/gstelement.c:3037 #26 0x0000ffffa35531a8 in g_cclosure_marshal_generic_va () from /opt/package/lib/gstlib/depend/libgobject-2.0.so.0 #27 0x0000ffffa3550740 in ?? () from /opt/package/lib/gstlib/depend/libgobject-2.0.so.0 #28 0x0000ffffa35524b0 in ?? () from /opt/package/lib/gstlib/depend/libgobject-2.0.so.0 #29 0x0000ffffa356fdf0 in g_signal_emit_valist () from /opt/package/lib/gstlib/depend/libgobject-2.0.so.0 #30 0x0000ffffa35708cc in g_signal_emit_by_name () from /opt/package/lib/gstlib/depend/libgobject-2.0.so.0 #32 0x0000ffffbc496d6c in ?? () from /usr/lib64/libstdc++.so.6 #33 0x0000ffffbc1c6280 in ?? () from /usr/lib64/libc.so.6 #34 0x0000ffffbc22c79c in ?? () from /usr/lib64/libc.so.6
About the minimum code to reproduce,Let me see how I can make a demo about this issue.
My operation is to call gst_element_set_state(h264Encoder, GST_STATE_PLAYING) when the pipeline starts, and call gst_element_set_state(h264Encoder, GST_STATE_NULL) after the pipeline stops. Repeating this operation will cause problems.
• Hardware Platform
The operating system I use is linux aarch64, and the signal of the GPU is T4. • DeepStream Version
I didn’t use DeepStream, I used the two plugins nvh264enc and nvh264dec in Gstreamer.
(https://gstreamer.freedesktop.org/documentation/nvcodec/nvh264enc.html) • NVIDIA GPU Driver Version
525.105.17 https://www.nvidia.cn/content/DriverDownloads/confirmation.php?url=/tesla/525.105.17/NVIDIA-Linux-aarch64-525.105.17.run&lang=cn&type=Tesla • Issue Type
I understand that this is a bug. The same code is inconsistent on X86 and aarch64. My program will not crash on X86. • How to reproduce the issue ?
There is no special configuration for the GPU, only the driver is installed.
About the minimum code to reproduce,Let me see how I can make a demo about this issue.
My operation is to call gst_element_set_state(h264Encoder, GST_STATE_PLAYING) when the pipeline starts, and call gst_element_set_state(h264Encoder, GST_STATE_NULL) after the pipeline stops. Repeating this operation will cause problems.
There is no update from you for a period, assuming this is not an issue anymore. Hence we are closing this topic. If need further support, please open a new one. Thanks
The problem is that nvcudah264enc (gstreamer.freedesktop.org) is based on libnvcuvid.so, seems your libnvcuvid.so for ARM server is not correct. Can you try to find latest Nvidia GPU driver for your centos 7 aarch64 machine to have a try?