Closed mkaivs closed 1 year ago
I can reproduce this issue. Currently interlatency, proctime, queuelevel and scheduletime are unusable due to this. framerate, cputime and bitrate seem to work.
Running one of the example pipelines under gdb:
GST_DEBUG="GST_TRACER:7" GST_TRACERS="queuelevel" gdb gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, framerate=(fraction)30/1' ! videorate max-rate=30 ! videoconvert ! queue max-size-buffers=20 ! avenc_h263p ! queue max-size-time=400000000 ! avimux ! fakesink sync=true
(gdb) bt
#0 0x00007ffff7db0159 in g_mutex_lock () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1 0x00007ffff6e4a3df in add_metadata_event_struct
(metadata_event=0x555555693000 "event {\n name = queuelevel;\n id = 6;\n stream_id = 0;\n fields := struct {\n string queue;\n integer { size = 32; align = 8; signed = 0; encoding = none; base = 10; } size_bytes;"...)
at ../plugins/tracers/gstctf.c:744
#2 0x00007ffff7fa5db1 in gst_queue_level_tracer_class_init (klass=0x55555587f710) at ../plugins/tracers/gstqueuelevel.c:207
#3 0x00007ffff7fa5390 in gst_queue_level_tracer_class_intern_init (klass=0x55555587f710) at ../plugins/tracers/gstqueuelevel.c:41
#4 0x00007ffff7ce9b28 in g_type_class_ref () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007ffff7cd2baa in g_object_new_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007ffff7cd2c8d in g_object_new () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7 0x00007ffff7e8516f in () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#8 0x00007ffff7d6fa38 in g_option_context_parse () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 0x000055555555851f in ()
#10 0x00007ffff7a29d90 in __libc_start_call_main (main=main@entry=0x5555555581c0, argc=argc@entry=1, argv=argv@entry=0x7fffffffd978) at ../sysdeps/nptl/libc_start_call_main.h:58
#11 0x00007ffff7a29e40 in __libc_start_main_impl (main=0x5555555581c0, argc=1, argv=0x7fffffffd978, init=<optimised out>, fini=<optimised out>, rtld_fini=<optimised out>, stack_end=0x7fffffffd968) at ../csu/libc-start.c:392
#12 0x0000555555558c05 in _start ()
(gdb) f 1
#1 0x00007ffff6e4a3df in add_metadata_event_struct (
metadata_event=0x555555693000 "event {\n name = queuelevel;\n id = 6;\n stream_id = 0;\n fields := struct {\n string queue;\n integer { size = 32; align = 8; signed = 0; encoding = none; base = 10; } size_bytes;"...)
at ../plugins/tracers/gstctf.c:744
744 g_mutex_lock (&ctf_descriptor->mutex);
(gdb) p ctf_descriptor
$1 = (GstCtfDescriptor *) 0x0
(gdb)
It seems like the gst_ctf_init
isn't being called. Looking at the diff between v0.6.0 and v0.8.0, I found a change to plugins/tracers/gstplugin.c in 11e6f12f5f17e68c8e6fd938660e74edcc8aa767
diff --git a/plugins/tracers/gstplugin.c b/plugins/tracers/gstplugin.c
index 900c4df..63efe1c 100644
--- a/plugins/tracers/gstplugin.c
+++ b/plugins/tracers/gstplugin.c
@@ -74,9 +74,6 @@ plugin_init (GstPlugin * plugin)
if (!gst_tracer_register (plugin, "buffer", gst_buffer_tracer_get_type ())) {
return FALSE;
}
- if (!gst_ctf_init ()) {
- return FALSE;
- }
return TRUE;
}
Reverting that change stops the segmentation fault for me. I don't know this codebase enough to know if this is the correct fix, but it allows me to at least run what I wanted to.
I get the same behaviour on Ubuntu 18.04. The fix from @MichaelOultram-pexip seems to work, thank you!
I had the same problem on Xavier NX running Ubuntu 20.04 with Nvidia patches on Gstreamer 1.16.3. Great find by @MichaelOultram-pexip fixed the issue for me. Many thanks!
Hey all, thanks for the reports and fixes! Sorry for the slow response. I've published a fix for this in the latest release. Please feel free to re-open if the problem persists.
I built and installed gst-shark on Ubuntu 20.04 as follow:
This issue doesn't occur when I build from this tag: https://github.com/RidgeRun/gst-shark/tree/v0.6.0. The issue occurred when I use the current master branch.
Then environment variables are:
GST_SHARK_FILE_BUFFERING=0
,GST_DEBUG="GST_TRACER:7"
,GST_TRACERS="interlatency"
The output:
The trace:
add_metadata_event_struct
is the function that caused the Segmentation fault.The issue can be reproduced by running this command: