#6431: Linux ffmpeg always segfaults using NVIDIA hw decoders/encoders -------------------------------------+------------------------------------- Reporter: bubbleguuum | Type: defect Status: new | Priority: normal Component: | Version: undetermined | unspecified Keywords: nvidia | Blocked By: Blocking: | Reproduced by developer: 1 Analyzed by developer: 0 | -------------------------------------+------------------------------------- Summary: using NVIDIA hardware decoding features always crashes ffmpeg with a Segmentation fault.
How to reprod: - Required: a NVIDIA card (starting with Geforce 600 series) and working NVIDIA binary drivers (reproduced with v375.66, v378.13 and the latest at this time: 381.22) - ffmpeg compiled with NVIDIA support (at least with the h264_nvdec decoder) This can be quickly reproduced using the static ffmpeg 3.3.1 (or git) build from https://johnvansickle.com/ffmpeg/, with either the 32 bit or 64 bit version. Crashing output, trying to encode with h264_nvenc: {{{ ffmpeg -v debug -i http://bubblesoftapps.com/bubbleupnpserver/transcode_test/tos_sample_h264.mkv -map 0 -c:0 h264_nvenc -f null /dev/null ffmpeg version 3.3.1-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2017 the FFmpeg developers built with gcc 5.4.1 (Debian 5.4.1-8) 20170304 configuration: --enable-gpl --enable-version3 --enable-static --disable- debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-5 --enable-fontconfig --enable-frei0r --enable-gnutls --enable- gray --enable-libass --enable-libfreetype --enable-libfribidi --enable- libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable- libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable- libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 libpostproc 54. 5.100 / 54. 5.100 Splitting the commandline. Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'. Reading option '-i' ... matched as input url with argument 'http://bubblesoftapps.com/bubbleupnpserver/transcode_test/tos_sample_h264.mkv'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0'. Reading option '-c:0' ... matched as option 'c' (codec name) with argument 'h264_nvenc'. Reading option '-f' ... matched as option 'f' (force format) with argument 'null'. Reading option '/dev/null' ... matched as output url. Finished splitting the commandline. Parsing a group of options: global . Applying option v (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input url http://bubblesoftapps.com/bubbleupnpserver/transcode_test/tos_sample_h264.mkv. Successfully parsed a group of options. Opening an input file: http://bubblesoftapps.com/bubbleupnpserver/transcode_test/tos_sample_h264.mkv. [http @ 0x3fde720] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy' [http @ 0x3fde720] request: GET /bubbleupnpserver/transcode_test/tos_sample_h264.mkv HTTP/1.1 User-Agent: Lavf/57.71.100 Accept: */* Range: bytes=0- Connection: close Host: bubblesoftapps.com Icy-MetaData: 1 [matroska,webm @ 0x3fddec0] Format matroska,webm probed with size=2048 and score=100 st:0 removing common factor 1000000 from timebase [matroska,webm @ 0x3fddec0] Before avformat_find_stream_info() pos: 843 bytes read:3779 seeks:0 nb_streams:1 [h264 @ 0x3fe5300] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x3fe5300] nal_unit_type: 8, nal_ref_idc: 3 [h264 @ 0x3fe5300] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x3fe5300] nal_unit_type: 8, nal_ref_idc: 3 [h264 @ 0x3fe5300] user data:"x264 - core 148 r2762 90a61ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=2000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00" [h264 @ 0x3fe5300] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x3fe5300] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x3fe5300] user data:"x264 - core 148 r2762 90a61ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=2000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00" [h264 @ 0x3fe5300] Reinit context to 1920x800, pix_fmt: yuv420p [h264 @ 0x3fe5300] no picture [matroska,webm @ 0x3fddec0] All info found [matroska,webm @ 0x3fddec0] After avformat_find_stream_info() pos: 89449 bytes read:91521 seeks:0 frames:4 Input #0, matroska,webm, from 'http://bubblesoftapps.com/bubbleupnpserver/transcode_test/tos_sample_h264.mkv': Metadata: COMPATIBLE_BRANDS: mp42isomavc1 MAJOR_BRAND : mp42 MINOR_VERSION : 0 ENCODER : Lavf57.72.101 Duration: 00:00:02.00, start: 0.000000, bitrate: 1359 kb/s Stream #0:0, 4, 1/1000: Video: h264 (High), 1 reference frame, yuv420p(progressive, left), 1920x800 [SAR 1:1 DAR 12:5], 0/1, 24 fps, 24 tbr, 1k tbn, 48 tbc (default) Metadata: ENCODER : Lavc57.93.100 libx264 DURATION : 00:00:02.000000000 Successfully opened the file. Parsing a group of options: output url /dev/null. Applying option map (set input stream mapping) with argument 0. Applying option c:0 (codec name) with argument h264_nvenc. Applying option f (force format) with argument null. Successfully parsed a group of options. Opening an output file: /dev/null. Successfully opened the file. detected 8 logical cores [h264 @ 0x3fe9840] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x3fe9840] nal_unit_type: 8, nal_ref_idc: 3 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) Last message repeated 1 times [h264 @ 0x3fe9840] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x3fe9840] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x3fe9840] user data:"x264 - core 148 r2762 90a61ec - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=2000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00" [h264 @ 0x3fe9840] Reinit context to 1920x800, pix_fmt: yuv420p [h264 @ 0x3fe9840] no picture cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x3ffe2e0] nal_unit_type: 1, nal_ref_idc: 2 [h264 @ 0x3ffe2e0] no picture cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x4005a20] nal_unit_type: 1, nal_ref_idc: 2 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x40933c0] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x40bfb80] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x40db720] nal_unit_type: 1, nal_ref_idc: 2 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x40f72c0] nal_unit_type: 1, nal_ref_idc: 2 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x4113160] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x412f000] nal_unit_type: 1, nal_ref_idc: 0 [h264 @ 0x3fe9840] nal_unit_type: 1, nal_ref_idc: 2 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x3ffe2e0] nal_unit_type: 1, nal_ref_idc: 2 [graph 0 input from stream 0:0 @ 0x40b8520] Setting 'video_size' to value '1920x800' [graph 0 input from stream 0:0 @ 0x40b8520] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x40b8520] Setting 'time_base' to value '1/1000' [graph 0 input from stream 0:0 @ 0x40b8520] Setting 'pixel_aspect' to value '1/1' [graph 0 input from stream 0:0 @ 0x40b8520] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x40b8520] Setting 'frame_rate' to value '24/1' [graph 0 input from stream 0:0 @ 0x40b8520] w:1920 h:800 pixfmt:yuv420p tb:1/1000 fr:24/1 sar:1/1 sws_param:flags=2 [format @ 0x40b8ca0] compat: called with args=[yuv420p|nv12|p010le|yuv444p|yuv444p16le|bgr0|rgb0|cuda] [format @ 0x40b8ca0] Setting 'pix_fmts' to value 'yuv420p|nv12|p010le|yuv444p|yuv444p16le|bgr0|rgb0|cuda' [AVFilterGraph @ 0x46254c0] query_formats: 4 queried, 3 merged, 0 already done, 0 delayed Segmentation fault (core dumped) }}} strace (see attached file) shows that the crash happens shortly after /usr/lib/x86_64-linux-gnu/libcuda.so.1 and /usr/lib/x86_64-linux-gnu /libnvidia-fatbinaryloader.so.378.13 are dynamically loaded. Using -hwaccel cuvid and/or *_cuvid encoders also crash identically. This issue is not GPU specific as I know someone else got it with a different NVIDIA GPU than me. This crash is also mentioned in one of the last comment of this gist page, using a custom build of ffmpeg: https://gist.github.com/Brainiarc7/988473b79fd5c8f0db54b92ebb47387a Could this issue be related to issue #6405 ? Could this issue be specific to static ffmpeg builds ? In any case, this issue makes using NVIDIA acceleration impossible currently on Linux. -- Ticket URL: <https://trac.ffmpeg.org/ticket/6431> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://ffmpeg.org/mailman/listinfo/ffmpeg-trac