#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@entry=6, no_tid=no_tid@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@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
_______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".