[FFmpeg-user] SEGV when using VMAF filter.
kevin.j.wheatley at gmail.com
Mon Apr 30 17:33:15 EEST 2018
I've just built a version of ffmpeg n4.0
from ace829cb45cff530b8a0aed6adf18f329d7a98f6 linked against libvmaf
I notice when running commands similar to the examples in the FFmpeg
ffmpeg -i test2.mov -i test3.mov -lavfi libvmaf -f null -
I get a segment fault:
#0 0x0000003eb4e08213 in pthread_join () from /lib64/libpthread.so.0
#1 0x000000000041a8cb in uninit () at libavfilter/vf_libvmaf.c:320
#2 0x00000000004c62f3 in avfilter_free () at libavfilter/avfilter.c:771
#3 0x00000000004c121c in avfilter_graph_free () at
#4 0x000000000049cd9c in init_complex_filtergraph ()
#5 0x0000000000499193 in ffmpeg_parse_options () at fftools/ffmpeg_opt.c:2046
#6 0x000000000048e078 in main () at fftools/ffmpeg.c:4788
looking at the code it looks like it is attempting to pthread_join()
before the vmaf_thread, has actually been created. This is backed up
by a quick and dirty hack, (if I check the variable is not NULL), I
can successfully run the filter with no problems, I'm not familiar
with the requirements for setting up filters in the code so I can't
say much more than that.
I note that a similar report was made
https://trac.ffmpeg.org/ticket/6865 but that was closed.
I'm happy to provide a patch if somebody could comment on the
appropriate method/pattern of behavior for creating and releasing
resources during the filte rgraph initialisation steps.
P.S. my quick hack.
diff --git a/libavfilter/vf_libvmaf.c b/libavfilter/vf_libvmaf.c
index 42c6b66..e3eb182 100644
@@ -317,7 +317,8 @@ static av_cold void uninit(AVFilterContext *ctx)
- pthread_join(s->vmaf_thread, NULL);
+ if (s->vmaf_thread)
+ pthread_join(s->vmaf_thread, NULL);
More information about the ffmpeg-user