<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 2 oct. 2020 08 h 15, Guy Morand <<a href="mailto:g.morand@scewo.ch">g.morand@scewo.ch</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hallo gstreamers developers,<br>
<br>
I'm writing a small daemon to stream the camera and send the stream<br>
over RTP. The user can configure the stream and mirror the image. To<br>
do that, while the stream is running, I make a call from the main<br>
thread similar to:<br>
<br>
g_object_set(_video_flip, "video-direction", GST_VIDEO_FLIP_HORIZONTAL, NULL);<br>
<br>
Where _video_flip is a GstElement* built with<br>
gst_element_factory_make("videoflip", "videoflip")<br>
<br>
Sometime, the stream stops and the application "crashes" with the message:<br>
ERROR:gstvideoflip.c:954:gst_video_flip_y422: code should not be reached<br>
<br>
Back trace with gdb gives me this relevant gstreamer stack trace:<br>
__GI_raise (sig=sig@entry=0x6) at ../sysdeps/unix/sysv/linux/raise.c:50<br>
50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.<br>
gdb$ bt<br>
#0  0x00007ffff6d597bb in __GI_raise (sig=sig@entry=0x6) at<br>
../sysdeps/unix/sysv/linux/raise.c:50<br>
#1  0x00007ffff6d44535 in __GI_abort () at abort.c:79<br>
#2  0x00007ffff7480dc3 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0<br>
#3  0x00007ffff74da67a in g_assertion_message_expr () at<br>
/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0<br>
#4  0x00007ffff4c4f5ef in gst_video_flip_y422 (videoflip=<optimized<br>
out>, dest=<optimized out>, src=<optimized out>) at gstvideoflip.c:954<br>
#5  0x00007ffff4c4d893 in gst_video_flip_transform_frame<br>
(vfilter=0x555555858790, in_frame=0x7ffff1470530,<br>
out_frame=0x7ffff14707d0) at gstvideoflip.c:1139<br>
#6  0x00007ffff4ba9e03 in  () at /usr/lib/x86_64-linux-gnu/libgstvideo-1.0.so.0<br>
#7  0x00007ffff4b3c609 in default_generate_output<br>
(trans=0x555555858790, outbuf=0x7ffff1470ae0) at<br>
gstbasetransform.c:2132<br>
#8  0x00007ffff4b3bcd6 in gst_base_transform_chain (pad=<optimized<br>
out>, parent=0x555555858790, buffer=<optimized out>) at<br>
gstbasetransform.c:2285<br>
#9  0x00007ffff7651c3a in gst_pad_chain_data_unchecked<br>
(data=0x7fffd401b190, type=4112, pad=0x555555852780) at gstpad.c:4322<br>
#10 0x00007ffff7651c3a in gst_pad_push_data<br>
(pad=pad@entry=0x555555853560, type=type@entry=4112,<br>
data=data@entry=0x7fffd401b190) at gstpad.c:4578<br>
#11 0x00007ffff7659ed2 in gst_pad_push (pad=0x555555853560,<br>
buffer=0x7fffd401b190) at gstpad.c:4697<br>
#12 0x00007ffff4b3bdfd in gst_base_transform_chain (pad=<optimized<br>
out>, parent=0x5555558602c0, buffer=<optimized out>) at<br>
gstbasetransform.c:2321<br>
#13 0x00007ffff7651c3a in gst_pad_chain_data_unchecked<br>
(data=0x7fffd401b190, type=4112, pad=0x555555853310) at gstpad.c:4322<br>
#14 0x00007ffff7651c3a in gst_pad_push_data<br>
(pad=pad@entry=0x555555852090, type=type@entry=4112,<br>
data=data@entry=0x7fffd401b190) at gstpad.c:4578<br>
#15 0x00007ffff7659ed2 in gst_pad_push (pad=pad@entry=0x555555852090,<br>
buffer=0x7fffd401b190) at gstpad.c:4697<br>
#16 0x00007ffff4b37ce5 in gst_base_src_loop (pad=0x555555852090) at<br>
gstbasesrc.c:2957<br>
#17 0x00007ffff7686f41 in gst_task_func (task=0x55555588c290) at gsttask.c:332<br>
#18 0x00007ffff74dbdb3 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0<br>
#19 0x00007ffff74db415 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0<br>
#20 0x00007ffff720dfa3 in start_thread (arg=<optimized out>) at<br>
pthread_create.c:486<br>
#21 0x00007ffff6e1b4cf in clone () at<br>
../sysdeps/unix/sysv/linux/x86_64/clone.S:95<br>
<br>
I'm wondering if that is a thread safety issue and if I'm allowed to<br>
do it this way. Any pointer?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">You are quite likely correct, this looks like this property have a bug regarding thread safety / runtime-safety. The code need to be inspected and corrected. You should open an issue on gitlab to start with.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Best regards,<br>
<br>
Guy Morand<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div></div></div>