compositor: segfault with BGRA input from wpesrc
I have a programmatic pipeline with wpesrc -> queue -> video/x-raw format=BGRA -> compositor -> format=RGBA
in it.
When launched, shortly after start I get segfault like this all the time:
ERROR: 0x7f3f1c2f9000 - [pageProxyID=5, webPageID=6, PID=2177642] WebPageProxy::processDidTerminate: (pid 2177642), reason 3
../Source/WebKit/UIProcess/WebPageProxy.cpp(7393) : void WebKit::WebPageProxy::processDidTerminate(WebKit::ProcessTerminationReason)
ERROR: 0x7f3f1c2f9000 - [pageProxyID=5, webPageID=6, PID=2177642] WebPageProxy::dispatchProcessDidTerminate: reason = 3
../Source/WebKit/UIProcess/WebPageProxy.cpp(7448) : void WebKit::WebPageProxy::dispatchProcessDidTerminate(WebKit::ProcessTerminationReason)
[Thread 0x7f3e22ffb700 (LWP 2177645) exited]
--Type <RET> for more, q to quit, c to continue without paging--
Thread 9 "compositor_0_ma" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f3f7213c700 (LWP 2177581)]
0x00007f3f942e6630 in ?? ()
(gdb) bt
#0 0x00007f3f942e6630 in ()
#1 0x00007f3f946ccdf5 in compositor_orc_blend_bgra
(d1=0x7f3f5d0df660 "So\212\377So\212\377So\212\377Ok\206\377Ok\206\377Mi\204\377Ok\206\377Nj\205\377Nj\205\377Mi\204\377Nj\205\377Lh\203\377Lf\201\377Jd\177\377Hd\177\377Hd\177\377De\200\377Ef\201\377@c~\377>a|\377>_z\377@a|\377>_z\377<]x\377;\\w\377:[v\377:[v\377:[v\377?\\r\377?\\r\377>\\u\377?]v\377<^t\377<^t\377<`t\377@dx\377Gdz\377Ebx\377@]q\377@]q\377B_s\377Hey\377C`t\377B_s\377D`r\377Iew\377?]o\377@^p\377\027\071M\377\"DX\377"..., d1_stride=5120, s1=0x7f3e20402800 <error: Cannot access memory at address 0x7f3e20402800>, s1_stride=7680, p1=127, n=1280, m=180) at gst/compositor/compositororc.c:1411
#2 0x00007f3f946d3db6 in blend_pads (comp=0x7f3f7213a078) at ../gst/compositor/compositor.c:1132
#3 0x00007f3f946d579e in gst_parallelized_task_runner_run (func=0x7f3f946d3d40 <blend_pads>, task_data=0x7f3f72139fd0, self=0x7f3f5c008700) at ../gst/compositor/compositor.c:968
#4 gst_compositor_aggregate_frames (vagg=<optimized out>, outbuf=<optimized out>) at ../gst/compositor/compositor.c:1248
#5 0x00007f3f9609edeb in gst_video_aggregator_do_aggregate
(outbuf=0x7f3f7213a4f0, output_end_time=3266666667 [0:00:03.266666667], output_start_time=3233333333 [0:00:03.233333333], vagg=0x7f3f900677f0 [GstVideoAggregator|compositor_0_main]) at ../gst-libs/gst/video/gstvideoaggregator.c:1761
#6 gst_video_aggregator_aggregate (agg=0x7f3f900677f0 [GstAggregator|compositor_0_main], timeout=1) at ../gst-libs/gst/video/gstvideoaggregator.c:1968
#7 0x00007f3f9642f683 in gst_aggregator_aggregate_func (self=0x7f3f900677f0 [GstAggregator|compositor_0_main]) at ../libs/gst/base/gstaggregator.c:1282
#8 0x00007f3f9638a417 in gst_task_func (task=0x7f3f90075710 [GstTask|compositor_0_main:src]) at ../gst/gsttask.c:328
#9 0x00007f3f961bd1d4 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007f3f961bc931 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f3f95ccc609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#12 0x00007f3f95bd6103 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Interestingly, everything works fine for a few seconds.
Inserting videoconvert
and capsfilter
with format=RGBA
helps, but would be nice to avoid if compositor
is supposed to work with any input.