[FFmpeg-trac] #11396(undetermined:new): filter_complex pipeline "segment; guided; concat" sometimes fails assertion
FFmpeg
trac at avcodec.org
Sat Jan 4 01:24:43 EET 2025
#11396: filter_complex pipeline "segment;guided;concat" sometimes fails assertion
-------------------------------------+-------------------------------------
Reporter: breunigs | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
To reproduce, run the following a couple of times:
{{{
ffmpeg -f lavfi -i testsrc2 -f lavfi -i testsrc2 \
-filter_complex
'[0]segment=timestamps=10[a][b];
[b][1]guided=guidance=on[c];
[a][c]concat=n=2' \
-f matroska - | \
head >/dev/null
}}}
It sometimes outputs
{{{Assertion mainpic failed at libavfilter/framesync.c:401}}}
instead of the expected
{{{Conversion failed!}}}
I'm not sure why it doesn't reproduce sometimes. Adding {{{-threads 1
-filter_threads 1 -filter_complex_threads 1}}} to the CLI makes no
difference, i.e. the bug can still be reproduced sometimes.
A full stacktrace for the reproducer looks like this:
{{{
#0 __pthread_kill_implementation (threadid=<optimized out>,
signo=signo at entry=6, no_tid=no_tid at entry=0) at ./nptl/pthread_kill.c:44
#1 0x00007f7d02c9debf in __pthread_kill_internal (threadid=<optimized
out>, signo=6) at ./nptl/pthread_kill.c:78
#2 0x00007f7d02c49c82 in __GI_raise (sig=sig at entry=6) at
../sysdeps/posix/raise.c:26
#3 0x00007f7d02c324f0 in __GI_abort () at ./stdlib/abort.c:79
#4 0x00005568e8114f13 in ff_framesync_dualinput_get () at
libavfilter/framesync.c:401
#5 0x00005568e81fe551 in process_frame () at libavfilter/vf_guided.c:319
#6 0x00005568e8114d46 in ff_framesync_activate () at
libavfilter/framesync.c:364
#7 0x00005568e81feae5 in activate () at libavfilter/vf_guided.c:409
#8 0x00005568e80f6a89 in ff_filter_activate () at
libavfilter/avfilter.c:1430
#9 0x00005568e80fc278 in ff_filter_graph_run_once () at
libavfilter/avfiltergraph.c:1488
#10 0x00005568e80fdd76 in push_frame () at libavfilter/buffersrc.c:183
#11 0x00005568e80fe560 in av_buffersrc_close () at
libavfilter/buffersrc.c:283
#12 0x00005568e80874f4 in send_eof () at fftools/ffmpeg_filter.c:2731
#13 0x00005568e8088443 in filter_thread () at fftools/ffmpeg_filter.c:3039
#14 0x00005568e80a18fd in task_wrapper () at fftools/ffmpeg_sched.c:2534
#15 0x00007f7d02c9c112 in start_thread (arg=<optimized out>) at
./nptl/pthread_create.c:447
#16 0x00007f7d02d1a8f8 in __GI___clone3 () at
../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
}}}
captured from
{{{
ffmpeg version N-118231-g2f4ec16836 Copyright (c) 2000-2025 the FFmpeg
developers
built with gcc 14 (Debian 14.2.0-6)
configuration: --enable-version3 --enable-gpl --enable-frei0r --enable-
libx264 --disable-doc --disable-ffplay --disable-ffprobe --enable-debug=1
--disable-stripping --disable-optimizations --extra-cflags='-O0 -g'
--extra-ldflags=-g
libavutil 59. 54.101 / 59. 54.101
libavcodec 61. 28.100 / 61. 28.100
libavformat 61. 9.104 / 61. 9.104
libavdevice 61. 4.100 / 61. 4.100
libavfilter 10. 6.101 / 10. 6.101
libswscale 8. 13.100 / 8. 13.100
libswresample 5. 4.100 / 5. 4.100
libpostproc 58. 4.100 / 58. 4.100
}}}
This fails for a Debian release version (i.e. not built by me) as well:
{{{
ffmpeg version 7.1-3 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14 (Debian 14.2.0-7)
configuration: --prefix=/usr --extra-version=3 --toolchain=hardened
--libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu
--arch=amd64 --enable-gpl --disable-stripping --disable-libmfx --disable-
omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b
--enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite
--enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-
libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-
libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt
--enable-libopus --enable-librubberband --enable-libshine --enable-
libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx
--enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid
--enable-libzimg --enable-openal --enable-opencl --enable-opengl
--disable-sndio --enable-libvpl --enable-libdc1394 --enable-libdrm
--enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa
--enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread
--enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist
--enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264
--enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-
libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg
--enable-libjxl --enable-shared
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.100 / 61. 19.100
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
}}}
- I checked as far back as bf0f996c1283731e56a7986a08002baa8ae5064c
(~2021-09), which still has this issue.
- The issue goes away if not both {{{in[0].before}}} and {{{in[0].after}}}
are set to {{{EXT_INFINITY}}}.
- I am able to reproduce this outside vf_guided using another (not
upstreamed) filter, so it doesn't seem to be strictly related to
vf_guided. It's just the only filter that sets before=after=EXT_INFINITY.
- shorter timestamps for vf_segment seem to fix the issue, or at least
make it very hard to reproduce. I was able to break it with values as low
as segment=timestamps=4.99 but not below.
- replacing vf_segment with e.g. vf_split "fixes" the issue. So does
removing the concat filter (and writing both outputs to files or stdout)
- adding a {{{-frames:v 100}}} after the filters also fixes the issue. The
number of frames needs to reasonably small, e.g. increasing the frames to
150 already shows the issue for me.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11396>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list