audioconvert: gst_buffer_resize_range: assertion 'bufmax >= bufoffs + offset + size' failed with pipewiresink pool buffer
This happens in main
and with 1.18.5
when playing a wma file using the libav decoder, and using pipewiresink
as sink (doesn't happen with pulsesink/alsasink for me).
[main] tpm@xps:/tmp/gst$ G_DEBUG=fatal_warnings gdb --args gst-play-1.0 --no-interactive https://people.freedesktop.org/~tpm/samples/glitch.wma --audiosink='pipewiresink' -v
...
(gdb) run
...
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0.GstMultiQueuePad:src_0: caps = audio/x-wma, wmaversion=(int)2, bitrate=(int)128016, depth=(int)16, rate=(int)44100, channels=(int)2, block_align=(int)5945, codec_data=(buffer)008800000f00e55c0000
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/avdec_wmav2:avdec_wmav2-0.GstPad:sink: caps = audio/x-wma, wmaversion=(int)2, bitrate=(int)128016, depth=(int)16, rate=(int)44100, channels=(int)2, block_align=(int)5945, codec_data=(buffer)008800000f00e55c0000
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0: max-size-buffers = 5
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/avdec_wmav2:avdec_wmav2-0.GstPad:src: caps = audio/x-raw, format=(string)F32LE, layout=(string)non-interleaved, rate=(int)44100, channels=(int)2, channel-mask=(bitmask)0x0000000000000003
...
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)F32LE, layout=(string)non-interleaved, rate=(int)44100, channels=(int)2, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioConvert:conv.GstPad:src: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioResample:resample.GstPad:src: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstVolume:volume.GstPad:src: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:src: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPipeWireSink:pipewiresink0.GstPad:sink: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:src.GstProxyPad:proxypad6: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstVolume:volume.GstPad:sink: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioResample:resample.GstPad:sink: caps = audio/x-raw, rate=(int)44100, format=(string)F32LE, channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioConvert:conv.GstPad:sink: caps = audio/x-raw, format=(string)F32LE, layout=(string)non-interleaved, rate=(int)44100, channels=(int)2, channel-mask=(bitmask)0x0000000000000003
/GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:sink: caps = audio/x-raw, format=(string)F32LE, layout=(string)non-interleaved, rate=(int)44100, channels=(int)2, channel-mask=(bitmask)0x0000000000000003
...
[New Thread 0x7fffc567d640 (LWP 125229)]
Redistribute latency...
0:00:01.5 / 0:03:40.5
(gst-play-1.0:125213): GStreamer-CRITICAL **: 20:03:48.409: gst_buffer_resize_range: assertion 'bufmax >= bufoffs + offset + size' failed
0:00:01.6 / 0:03:40.5
Thread 8 "aqueue:src" received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 0x7fffdffff640 (LWP 125225)]
g_logv (log_domain=0x7ffff7e61bac "GStreamer", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../../../glib/gmessages.c:1417
Download failed: Invalid argument. Continuing without source file ./debian/build/deb/../../../glib/gmessages.c.
1417 ../../../glib/gmessages.c: No such file or directory.
(gdb) bt
#0 g_logv (log_domain=0x7ffff7e61bac "GStreamer", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../../../glib/gmessages.c:1417
#1 0x00007ffff7ba172f in g_log
(log_domain=log_domain@entry=0x7ffff7e61bac "GStreamer", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff7bf8ca4 "%s: assertion '%s' failed")
at ../../../glib/gmessages.c:1455
#2 0x00007ffff7ba1f49 in g_return_if_fail_warning
(log_domain=log_domain@entry=0x7ffff7e61bac "GStreamer", pretty_function=pretty_function@entry=0x7ffff7e65e40 <__func__.29> "gst_buffer_resize_range", expression=expression@entry=0x7ffff7e65838 "bufmax >= bufoffs + offset + size") at ../../../glib/gmessages.c:2894
#3 0x00007ffff7dc35e2 in gst_buffer_resize_range (buffer=0x7fffd004f7e0, idx=idx@entry=0, length=1, length@entry=-1, offset=offset@entry=0, size=163840)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstbuffer.c:1706
#4 0x00007ffff7dc38b2 in gst_buffer_resize (buffer=<optimized out>, offset=offset@entry=0, size=<optimized out>) at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstbuffer.c:1646
#5 0x00007ffff40e2f36 in gst_audio_convert_prepare_output_buffer (base=<optimized out>, inbuf=0x7fffe864e6c0, outbuf=0x7fffdfffe9f8)
at ../../home/tpm/Devel/gstreamer/subprojects/gst-plugins-base/gst/audioconvert/gstaudioconvert.c:952
#6 0x00007ffff77a74b4 in default_generate_output (trans=0x7fffd0048e30 [GstAudioConvert], outbuf=0x7fffdfffe9f8)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/libs/gst/base/gstbasetransform.c:2159
#7 0x00007ffff77a6e6d in gst_base_transform_chain (pad=<optimized out>, parent=0x7fffd0048e30 [GstAudioConvert], buffer=<optimized out>)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/libs/gst/base/gstbasetransform.c:2341
#8 0x00007ffff7dfdacd in gst_pad_chain_data_unchecked (pad=pad@entry=0x7fffd0046360 [GstPad], type=type@entry=4112, data=data@entry=0x7fffe864e6c0)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstpad.c:4447
#9 0x00007ffff7dffcc9 in gst_pad_push_data (pad=pad@entry=0x7fffd0028330 [GstProxyPad], type=type@entry=4112, data=data@entry=0x7fffe864e6c0)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstpad.c:4711
#10 0x00007ffff7e07012 in gst_pad_push (pad=pad@entry=0x7fffd0028330 [GstProxyPad], buffer=buffer@entry=0x7fffe864e6c0) at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstpad.c:4830
#11 0x00007ffff7deab0b in gst_proxy_pad_chain_default (pad=<optimized out>, parent=<optimized out>, buffer=0x7fffe864e6c0)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstghostpad.c:127
#12 0x00007ffff7dfdacd in gst_pad_chain_data_unchecked (pad=pad@entry=0x7fffe8644ef0 [GstGhostPad], type=type@entry=4112, data=data@entry=0x7fffe864e6c0)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstpad.c:4447
#13 0x00007ffff7dffcc9 in gst_pad_push_data (pad=pad@entry=0x7fffcc368ec0 [GstPad], type=type@entry=4112, data=data@entry=0x7fffe864e6c0)
at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstpad.c:4711
#14 0x00007ffff7e07012 in gst_pad_push (pad=0x7fffcc368ec0 [GstPad], buffer=buffer@entry=0x7fffe864e6c0) at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gstpad.c:4830
#15 0x00007ffff42f804d in gst_queue_push_one (queue=0x7fffd002e390 [GstQueue]) at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/plugins/elements/gstqueue.c:1388
#16 gst_queue_loop (pad=<optimized out>) at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/plugins/elements/gstqueue.c:1541
#17 0x00007ffff7e3548f in gst_task_func (task=0x7fffe87e4b90 [GstTask]) at ../../home/tpm/Devel/gstreamer/subprojects/gstreamer/gst/gsttask.c:384
#18 0x00007ffff7bc47c4 in g_thread_pool_thread_proxy (data=<optimized out>) at ../../../glib/gthreadpool.c:354
#19 0x00007ffff7bc3ecd in g_thread_proxy (data=0x7fffe80174c0) at ../../../glib/gthread.c:827
#20 0x00007ffff7744eae in start_thread (arg=0x7fffdffff640) at pthread_create.c:463
#21 0x00007ffff78dfa5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95