Opened 2 weeks ago

Closed 2 weeks ago

Last modified 2 weeks ago

#6884 closed defect (invalid)

Crash if libvmaf model file has DOS line endings or can't be found

Reported by: Gyan Owned by:
Priority: important Component: avfilter
Version: git-master Keywords: libvmaf crash abort
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: yes

Description

I've compiled ffmpeg with libvmaf on Windows using MinGW. The filter works fine if the model file is found and has Unix line endings, otherwise it crashes.

Command 1 - with no filter options passed to libvmaf so it looks in default path for model file, which isn't there.

ffmpeg -i t:\anyfile.mp4 -lavfi [0][0]libvmaf -f null -

Log is pasted verbatim (with mangled character printing)

ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project)
  configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable-demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable-decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable-decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable-decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable-encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable-outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config-flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs
  libavutil      56.  4.100 / 56.  4.100
  libavcodec     58.  6.102 / 58.  6.102
  libavformat    58.  2.103 / 58.  2.103
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  5.100 /  7.  5.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.2.100
  Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 (h264) -> libvmaf:main
  Stream #0:0 (h264) -> libvmaf:reference
  libvmaf -> Stream #0:0 (wrapped_avframe)
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':S
t  Metadata:
a    major_brand     : risomt
     minor_version   : c51a2l
c    compatible_brands:u lisomiso2avc1mp41a
t    encoder         : iLavf58.2.103n
g    Stream #0: 0V: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sM, A25 fps, F25 tbn,  25 tbcs (default)c
o    Metadata:
r      encoder         : eLavc58.6.102 wrapped_avframe.
..
Input model at /usr/local/share/model/vmaf_v0.6.1.pkl cannot be read successfully.
terminate called after throwing an instance of 'VmafException'
  what():  Error loading model (.pkl): Trouble reading the file:/usr/local/share/model/vmaf_v0.6.1.pkl

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Windows Problem Signature

Problem Event Name:	APPCRASH
  Application Name:	ffmpeg.exe
  Application Version:	0.0.0.0
  Application Timestamp:	0026ff60
  Fault Module Name:	ffmpeg.exe
  Fault Module Version:	0.0.0.0
  Fault Module Timestamp:	0026ff60
  Exception Code:	40000015
  Exception Offset:	0000000000518c6e
  OS Version:	6.1.7601.2.1.0.256.1
  Locale ID:	1033
  Additional Information 1:	4853
  Additional Information 2:	48531a60e339689f315ee0b09464db2c
  Additional Information 3:	5b25
  Additional Information 4:	5b2547d963930beee67fa94195b51bca

Command 2 - correct model path specified. Model file is that checked out from VMAF repo, and has CRLF endings. Git repo was set to eol.mode=lf before cloning.

ffmpeg -i t:\anyfile.mp4 -lavfi [0][0]libvmaf='C\:\\avutils\\ffmpeg-libs\\compiled\\share\\model\\vmaf_v0.6.1.pkl' -f null -

Log

ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project)
  configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable-demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable-decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable-decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable-decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable-encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable-outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config-flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs
  libavutil      56.  4.100 / 56.  4.100
  libavcodec     58.  6.102 / 58.  6.102
  libavformat    58.  2.103 / 58.  2.103
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  5.100 /  7.  5.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.2.100
  Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 (h264) -> libvmaf:main
  Stream #0:0 (h264) -> libvmaf:reference
  libvmaf -> Stream #0:0 (wrapped_avframe)
Press [q] to stop, [?] for help
SOutput #0, null, to 'pipe:':
ta  Metadata:
    major_brand     : rtisom
c    minor_version   : a51l2c
u    compatible_brands:l aisomiso2avc1mp41t
i    encoder         : nLavf58.2.103g
     Stream #0:V0M: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sA, F25 fps,  25 tbn, s25 tbcc (default)o
r    Metadata:
e      encoder         : .Lavc58.6.102 wrapped_avframe.
.
Input model at C:\avutils\ffmpeg-libs\compiled\share\model\vmaf_v0.6.1.pkl cannot be read successfully.
terminate called after throwing an instance of 'VmafException'
  what():  Error loading model (.pkl): No newline at end o string

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Windows

Problem Event Name:	APPCRASH
  Application Name:	ffmpeg.exe
  Application Version:	0.0.0.0
  Application Timestamp:	0026ff60
  Fault Module Name:	ffmpeg.exe
  Fault Module Version:	0.0.0.0
  Fault Module Timestamp:	0026ff60
  Exception Code:	40000015
  Exception Offset:	0000000000518c6e
  OS Version:	6.1.7601.2.1.0.256.1
  Locale ID:	1033
  Additional Information 1:	4853
  Additional Information 2:	48531a60e339689f315ee0b09464db2c
  Additional Information 3:	5b25
  Additional Information 4:	5b2547d963930beee67fa94195b51bca

Command 3 - same command as above, after running dos2unix on the model file

ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project)
  configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable-demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable-decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable-decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable-decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable-encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable-outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config-flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs
  libavutil      56.  4.100 / 56.  4.100
  libavcodec     58.  6.102 / 58.  6.102
  libavformat    58.  2.103 / 58.  2.103
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  5.100 /  7.  5.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.2.100
  Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 (h264) -> libvmaf:main
  Stream #0:0 (h264) -> libvmaf:reference
  libvmaf -> Stream #0:0 (wrapped_avframe)
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':St
  Metadata:
ar    major_brand     : isomt
    minor_version   : ca512lc
    compatible_brands:ul isomiso2avc1mp41at
    encoder         : inLavf58.2.103
g     Stream #0:V0M: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sA, F 25 fps, 25 tbn, sc25 tbc (defauolt)r
e    Metadata:
.      encoder         : .Lavc58.6.102 wrapped_avframe.

frame=   25 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A speed=2.67x
video:13kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Exec FPS: 66.133787
VMAF score = 99.896002
[libvmaf @ 000000000030b320] VMAF score: 99.896002

Change History (11)

comment:1 Changed 2 weeks ago by cehoyos

  • Priority changed from important to normal
  • Resolution set to duplicate
  • Status changed from new to closed

As long as backtrace, disassembly and register dump are missing, I assume this is a duplicate of ticket #6866.

comment:2 follow-up: Changed 2 weeks ago by Gyan

  • Priority changed from normal to important
  • Resolution duplicate deleted
  • Status changed from closed to reopened

Results of gdb for command 1.

gdb ffmpeg_g.exe

(gdb) r -i t:\anyfile.mp4 -lavfi [0][0]libvmaf -f null -
Starting program: C:\avutils\ffmpeg-custom\ffmpeg_g.exe -i t:\anyfile.mp4 -lavfi [0][0]libvmaf -f null -
[New Thread 16688.0x3cc4]
ffmpeg version N-89341-g0137386fc1-2017-11-30 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (x86_64-posix-sjlj-rev1, Built by MinGW-W64 project)
  configuration: --disable-everything --disable-ffplay --disable-ffprobe --disable-doc --enable-protocols --enable-demuxer=image2 --enable-demuxer=matroska --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=rawvideo --enable-demuxer=wav --enable-decoder=aac --enable-decoder=h264 --enable-decoder=mjpeg --enable-decoder=mp3 --enable-decoder=mpeg4 --enable-decoder=pcm_s16le --enable-decoder=png --enable-decoder=rawvideo --enable-filter=libvmaf --enable-encoder=pcm_s16le --enable-encoder=png --enable-encoder=rawvideo --enable-encoder=wrapped_avframe --enable-muxer=image2 --enable-muxer=null --enable-muxer=nut --enable-muxer=rawvideo --enable-muxer=wav --enable-outdev=sdl2 --enable-libvmaf --disable-w32threads --enable-pthreads --enable-static --disable-shared --extra-ldflags=-static --pkg-config-flags=--static --enable-gpl --enable-version3 --extra-version=2017-11-30 --disable-hwaccel-libs
  libavutil      56.  4.100 / 56.  4.100
  libavcodec     58.  6.102 / 58.  6.102
  libavformat    58.  2.103 / 58.  2.103
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  5.100 /  7.  5.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 't:\anyfile.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.2.100
  Duration: 00:00:01.00, start: 0.000000, bitrate: 295 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 286 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
[New Thread 16688.0x3d30]
[New Thread 16688.0x4100]
[New Thread 16688.0x23e0]
[New Thread 16688.0x43c0]
[New Thread 16688.0x4384]
[New Thread 16688.0x42e8]
[New Thread 16688.0x4104]
[New Thread 16688.0x2c78]
[New Thread 16688.0x2690]
Stream mapping:
  Stream #0:0 (h264) -> libvmaf:main
  Stream #0:0 (h264) -> libvmaf:reference
  libvmaf -> Stream #0:0 (wrapped_avframe)
Press [q] to stop, [?] for help
[New Thread 16688.0x3e60]
[New Thread 16688.0x3094]
[New Thread 16688.0x33a0]
[New Thread 16688.0x4334]
[New Thread 16688.0x2ee0]
[New Thread 16688.0x2908]
[New Thread 16688.0x2f18]
[New Thread 16688.0x437c]
[New Thread 16688.0x2970]
SOutput #0, null, to 'pipe:':t
a  Metadata:
r    major_brand     : tisom
c    minor_version   : a51l2c
u    compatible_brands:l aisomiso2avc1mp41t
i    encoder         : nLavf58.2.103g
     Stream #0:V0M: Video: wrapped_avframe, yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/sAF, 25 fps,  s25 tbn, 25 tbcco (default)r
e    Metadata:
.      encoder         : .Lavc58.6.102 wrapped_avframe.

Input model at /usr/local/share/model/vmaf_v0.6.1.pkl cannot be read successfully.
terminate called after throwing an instance of 'VmafException'
  what():  Error loading model (.pkl): Trouble reading the file:/usr/local/share/model/vmaf_v0.6.1.pkl

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
[Thread 16688.0x3e60 exited with code 3]
[Thread 16688.0x437c exited with code 3]
[Thread 16688.0x2908 exited with code 3]
[Thread 16688.0x2f18 exited with code 3]
[Thread 16688.0x2ee0 exited with code 3]
[Thread 16688.0x4334 exited with code 3]
[Thread 16688.0x3094 exited with code 3]
[Thread 16688.0x33a0 exited with code 3]
[Thread 16688.0x42e8 exited with code 3]
[Thread 16688.0x2c78 exited with code 3]
[Thread 16688.0x2690 exited with code 3]
[Thread 16688.0x4104 exited with code 3]
[Thread 16688.0x23e0 exited with code 3]
[Thread 16688.0x4384 exited with code 3]
[Thread 16688.0x43c0 exited with code 3]
[Thread 16688.0x4100 exited with code 3]
[Thread 16688.0x3d30 exited with code 3]
[Inferior 1 (process 16688) exited with code 03]

(gdb) bt
No stack.

(gdb) disass $pc-32,$pc+32
No registers.

(gdb) info all-registers
The program has no registers now.

comment:3 in reply to: ↑ 2 Changed 2 weeks ago by cehoyos

  • Resolution set to needs_more_info
  • Status changed from reopened to closed

Replying to Gyan:

(gdb) bt
No stack.

This is unfortunately not useful, I suggest you test again one #6866 is fixed.

comment:4 follow-up: Changed 2 weeks ago by rbultje

  • Analyzed by developer set
  • Component changed from undetermined to avfilter
  • Reproduced by developer set
  • Resolution needs_more_info deleted
  • Status changed from closed to reopened
$ lldb ./ffmpeg_g
(lldb) target create "./ffmpeg_g"
r Current executable set to './ffmpeg_g' (x86_64).
(lldb) r -i ~/Movies/nflx360p/res/box.1k.ivf -i ~/Movies/nflx360p/BoxingPractice.ffv1.mkv -lavfi libvmaf=/Users/ronaldbultje/Projects/vmaf/model/nflxall_vmafv3.pkl2 -f null -
Process 52892 launched: './ffmpeg_g' (x86_64)
ffmpeg version N-88433-gfa21ab3 Copyright (c) 2000-2017 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.38)
  configuration: --enable-gpl --samples=/Users/ronaldbultje/Movies/fate-suite-ff --enable-libvpx --enable-libx264 --enable-libvmaf --extra-cflags=-I/Users/ronaldbultje/Projects/libvpx --extra-libs=' -L/Users/ronaldbultje/Projects/libvpx/x86-64' --disable-autodetect
  libavutil      56.  0.100 / 56.  0.100
  libavcodec     58.  1.100 / 58.  1.100
  libavformat    58.  0.102 / 58.  0.102
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  0.101 /  7.  0.101
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.100 /  3.  0.100
  libpostproc    55.  0.100 / 55.  0.100
Input #0, ivf, from '/Users/ronaldbultje/Movies/nflx360p/res/box.1k.ivf':
  Duration: 00:00:04.23, start: 0.000000, bitrate: 985 kb/s
    Stream #0:0: Video: vp9 (Profile 0) (VP90 / 0x30395056), yuv420p(tv), 640x360, 30 tbr, 30 tbn, 30 tbc
Input #1, matroska,webm, from '/Users/ronaldbultje/Movies/nflx360p/BoxingPractice.ffv1.mkv':
  Metadata:
    ENCODER         : Lavf57.23.100
  Duration: 00:00:04.23, start: 0.000000, bitrate: 31842 kb/s
    Stream #1:0: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 640x360, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      ENCODER         : Lavc57.22.100 ffv1
      DURATION        : 00:00:04.233000000
Stream mapping:
  Stream #0:0 (vp9) -> libvmaf:main
  Stream #1:0 (ffv1) -> libvmaf:reference
  libvmaf -> Stream #0:0 (wrapped_avframe)
Press [q] to stop, [?] for help
Start calculating VMAF score...
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf58.0.102
    Stream #0:0: Video: wrapped_avframe, yuv420p, 640x360, q=2-31, 200 kb/s, 30 fps, 30 tbn, 30 tbc (default)
    Metadata:
      encoder         : Lavc58.1.100 wrapped_avframe
Input model at /Users/ronaldbultje/Projects/vmaf/model/nflxall_vmafv3.pkl2 cannot be read successfully.
libc++abi.dylib: terminating with uncaught exception of type VmafException: Error loading model (.pkl): Trouble reading the file:/Users/ronaldbultje/Projects/vmaf/model/nflxall_vmafv3.pkl2
Process 52892 stopped
* thread #2, stop reason = signal SIGABRT
    frame #0: 0x00007fffb554bd42 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
->  0x7fffb554bd42 <+10>: jae    0x7fffb554bd4c            ; <+20>
    0x7fffb554bd44 <+12>: movq   %rax, %rdi
    0x7fffb554bd47 <+15>: jmp    0x7fffb5544caf            ; cerror_nocancel
    0x7fffb554bd4c <+20>: retq   
Target 0: (ffmpeg_g) stopped.
(lldb) bt
* thread #2, stop reason = signal SIGABRT
  * frame #0: 0x00007fffb554bd42 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fffb5639457 libsystem_pthread.dylib`pthread_kill + 90
    frame #2: 0x00007fffb54b1420 libsystem_c.dylib`abort + 129
    frame #3: 0x00007fffb400494a libc++abi.dylib`abort_message + 266
    frame #4: 0x00007fffb4029c17 libc++abi.dylib`default_terminate_handler() + 243
    frame #5: 0x00007fffb4b39713 libobjc.A.dylib`_objc_terminate() + 124
    frame #6: 0x00007fffb4026d49 libc++abi.dylib`std::__terminate(void (*)()) + 8
    frame #7: 0x00007fffb40267be libc++abi.dylib`__cxa_throw + 121
    frame #8: 0x0000000100d8dbe4 ffmpeg_g`_read_and_assert_model(model_path="/Users/ronaldbultje/Projects/vmaf/model/nflxall_vmafv3.pkl2", feature_names=0x00007000104bb790, norm_type=<unavailable>, slopes=0x00007000104bb730, intercepts=<unavailable>, score_clip=<unavailable>, score_transform=<unavailable>) at vmaf.cpp:92 [opt]
    frame #9: 0x0000000100d8e44c ffmpeg_g`VmafRunner::run(this=0x00007000104bb890, asset=<unavailable>, read_frame=(ffmpeg_g`read_frame_8bit at vf_libvmaf.c:145), user_data=0x0000000102504f40, disable_clip=<unavailable>, enable_transform=<unavailable>, do_psnr=<unavailable>, do_ssim=<unavailable>, do_ms_ssim=<unavailable>)(float*, float*, float*, int, void*), void*, bool, bool, bool, bool, bool) at vmaf.cpp:149 [opt]
    frame #10: 0x0000000100d92aa2 ffmpeg_g`RunVmaf(fmt=<unavailable>, width=640, height=360, read_frame=<unavailable>, user_data=<unavailable>, model_path="/Users/ronaldbultje/Projects/vmaf/model/nflxall_vmafv3.pkl2", log_path="UAWAVAUATSH\x83?HM\x89?A\x89?H\x89t$ H\x89?M\x8d?\x90", log_fmt=<unavailable>, disable_clip=<unavailable>, enable_transform=<unavailable>, do_psnr=<unavailable>, do_ssim=<unavailable>, do_ms_ssim=<unavailable>, pool_method=0x0000000000000000)(float*, float*, float*, int, void*), void*, char const*, char const*, char const*, bool, bool, bool, bool, bool, char const*) at vmaf.cpp:645 [opt]
    frame #11: 0x0000000100d6696f ffmpeg_g`::compute_vmaf(fmt=<unavailable>, width=<unavailable>, height=<unavailable>, read_frame=<unavailable>, user_data=<unavailable>, model_path=<unavailable>, log_path=0x0000000000000000, log_fmt=0x0000000000000000, disable_clip=0, disable_avx=0, enable_transform=0, phone_model=0, do_psnr=0, do_ssim=0, do_ms_ssim=0, pool_method=0x0000000000000000)(float *, float *, float *, int, void *), void *, char *, char *, char *, int, int, int, int, int, int, int, char *) at libvmaf.cpp:63 [opt]
    frame #12: 0x000000010010e86f ffmpeg_g`call_vmaf [inlined] compute_vmaf_score(s=0x0000000102504f40) at vf_libvmaf.c:159 [opt]
    frame #13: 0x000000010010e7cf ffmpeg_g`call_vmaf(ctx=0x0000000102504f40) at vf_libvmaf.c:168 [opt]
    frame #14: 0x00007fffb563693b libsystem_pthread.dylib`_pthread_body + 180
    frame #15: 0x00007fffb5636887 libsystem_pthread.dylib`_pthread_start + 286
    frame #16: 0x00007fffb563608d libsystem_pthread.dylib`thread_start + 13

It appears the library aborts if the model is missing, so we should probably check that the model is valid before passing it in (at least check if the file exists), or alternatively fix the upstream code to not abort but instead return an error.

comment:5 in reply to: ↑ 4 Changed 2 weeks ago by cehoyos

Replying to rbultje:

It appears the library aborts if the model is missing, so we should probably check that the model is valid before passing it in (at least check if the file exists), or alternatively fix the upstream code to not abort but instead return an error.

Alternatively?
You mean if a file disappears, the abort is ok?

comment:6 Changed 2 weeks ago by Cigaes

A library aborting in that kind of situation is just unacceptable. We cannot duplicate the parsing code to ensure the validity before opening, that would be insane.

comment:7 follow-up: Changed 2 weeks ago by rbultje

I see we have a volunteer - great! @cigaes: code is here: https://github.com/netflix/vmaf/, the library is in wrapper/src/. Thanks!

comment:8 Changed 2 weeks ago by Cigaes

You see wrong. We should just close "invalid" since it is not our bug.

comment:9 in reply to: ↑ 7 Changed 2 weeks ago by cehoyos

Replying to rbultje:

I see we have a volunteer - great! @cigaes: code is here: https://github.com/netflix/vmaf/, the library is in wrapper/src/. Thanks!

Please stop this now!

comment:10 Changed 2 weeks ago by cehoyos

  • Keywords libvmaf crash abort added
  • Resolution set to invalid
  • Status changed from reopened to closed

This has to be fixed in libvmaf.

comment:11 Changed 2 weeks ago by Gyan

I thought so, but was told to open a ticket here.

https://github.com/Netflix/vmaf/issues/124

Note: See TracTickets for help on using tickets.