Opened 6 years ago

Closed 6 years ago

Last modified 6 years 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 by Carl Eugen Hoyos, 6 years ago

Priority: importantnormal
Resolution: duplicate
Status: newclosed

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

comment:2 by Gyan, 6 years ago

Priority: normalimportant
Resolution: duplicate
Status: closedreopened

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.

in reply to:  2 comment:3 by Carl Eugen Hoyos, 6 years ago

Resolution: needs_more_info
Status: reopenedclosed

Replying to Gyan:

(gdb) bt
No stack.

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

comment:4 by Ronald S. Bultje, 6 years ago

Analyzed by developer: set
Component: undeterminedavfilter
Reproduced by developer: set
Resolution: needs_more_info
Status: closedreopened
$ 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.

in reply to:  4 comment:5 by Carl Eugen Hoyos, 6 years ago

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 by Cigaes, 6 years ago

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 by Ronald S. Bultje, 6 years ago

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 by Cigaes, 6 years ago

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

in reply to:  7 comment:9 by Carl Eugen Hoyos, 6 years ago

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 by Carl Eugen Hoyos, 6 years ago

Keywords: libvmaf crash abort added
Resolution: invalid
Status: reopenedclosed

This has to be fixed in libvmaf.

comment:11 by Gyan, 6 years ago

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.