Opened 9 years ago
Closed 9 years ago
#5347 closed defect (fixed)
Use of borderw with attached font crashes ffmpeg
Reported by: | Mulvya | Owned by: | |
---|---|---|---|
Priority: | important | Component: | avfilter |
Version: | git-master | Keywords: | drawtext crash SIGSEGV |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Use of command below causes ffmpeg to crash. Use of same command without borderw results in successful completion. Use of same command with borderw but with cour.ttf (Courier) results in successful completion.
Using 2016-03-17 Zeranoe build on Windows 7 Ultimate 64-bit (no SP installed). Behaviour reproduced on another system with same OS and set of font files.
Command:
ffmpeg -f lavfi -i "color=black:s=1280x720" -filter_complex "drawtext=fontfile=bpmono.ttf:text='Hello World':fontcolor=white@1.0:fontsize=16:borderw=5:x=w-tw-10:y=10:box=1:boxcolor=black@0.5" -c:v libx264 -preset veryfast -t 5 textwithborder.mp4 -report
Report:
ffmpeg started on 2016-03-17 at 15:50:25 Report written to "ffmpeg-20160317-155025.log" Command line: ffmpeg -f lavfi -i "color=black:s=1280x720" -filter_complex "drawtext=fontfile=bpmono.ttf:text='Hello World':fontcolor=white@1.0:fontsize=16:borderw=5:x=w-tw-10:y=10:box=1:boxcolor=black@0.5" -c:v libx264 -preset veryfast -t 5 textwithborder.mp4 -report ffmpeg version N-79068-g6b7ce0e Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.3.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 19.100 / 55. 19.100 libavcodec 57. 28.103 / 57. 28.103 libavformat 57. 28.102 / 57. 28.102 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 39.102 / 6. 39.102 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Splitting the commandline. Reading option '-f' ... matched as option 'f' (force format) with argument 'lavfi'. Reading option '-i' ... matched as input file with argument 'color=black:s=1280x720'. Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument 'drawtext=fontfile=bpmono.ttf:text='Hello World':fontcolor=white@1.0:fontsize=16:borderw=5:x=w-tw-10:y=10:box=1:boxcolor=black@0.5'. Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'libx264'. Reading option '-preset' ... matched as AVOption 'preset' with argument 'veryfast'. Reading option '-t' ... matched as option 't' (record or transcode "duration" seconds of audio/video) with argument '5'. Reading option 'textwithborder.mp4' ... matched as output file. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option filter_complex (create a complex filtergraph) with argument drawtext=fontfile=bpmono.ttf:text='Hello World':fontcolor=white@1.0:fontsize=16:borderw=5:x=w-tw-10:y=10:box=1:boxcolor=black@0.5. Applying option report (generate a report) with argument 1. Successfully parsed a group of options. Parsing a group of options: input file color=black:s=1280x720. Applying option f (force format) with argument lavfi. Successfully parsed a group of options. Opening an input file: color=black:s=1280x720. detected 4 logical cores [Parsed_color_0 @ 00000000003cb3e0] Setting 'color' to value 'black' [Parsed_color_0 @ 00000000003cb3e0] Setting 's' to value '1280x720' [Parsed_color_0 @ 00000000003cb3e0] size:1280x720 rate:25/1 duration:-1.000000 sar:1/1 [AVFilterGraph @ 000000000056ae00] query_formats: 2 queried, 1 merged, 0 already done, 0 delayed [lavfi @ 00000000003c9dc0] All info found Input #0, lavfi, from 'color=black:s=1280x720': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0, 1, 1/25: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc Successfully opened the file. [Parsed_drawtext_0 @ 00000000005e7240] Setting 'fontfile' to value 'bpmono.ttf' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'text' to value 'Hello World' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'fontcolor' to value 'white@1.0' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'fontsize' to value '16' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'borderw' to value '5' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'x' to value 'w-tw-10' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'y' to value '10' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'box' to value '1' [Parsed_drawtext_0 @ 00000000005e7240] Setting 'boxcolor' to value 'black@0.5' Parsing a group of options: output file textwithborder.mp4. Applying option c:v (codec name) with argument libx264. Applying option t (record or transcode "duration" seconds of audio/video) with argument 5. Successfully parsed a group of options. Opening an output file: textwithborder.mp4. [file @ 00000000005e9200] Setting default whitelist 'file' Successfully opened the file. [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'fontfile' to value 'bpmono.ttf' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'text' to value 'Hello World' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'fontcolor' to value 'white@1.0' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'fontsize' to value '16' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'borderw' to value '5' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'x' to value 'w-tw-10' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'y' to value '10' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'box' to value '1' [Parsed_drawtext_0 @ 00000000005e73c0] Setting 'boxcolor' to value 'black@0.5' [graph 0 input from stream 0:0 @ 00000000005e7240] Setting 'video_size' to value '1280x720' [graph 0 input from stream 0:0 @ 00000000005e7240] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 00000000005e7240] Setting 'time_base' to value '1/25' [graph 0 input from stream 0:0 @ 00000000005e7240] Setting 'pixel_aspect' to value '1/1' [graph 0 input from stream 0:0 @ 00000000005e7240] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 00000000005e7240] Setting 'frame_rate' to value '25/1' [graph 0 input from stream 0:0 @ 00000000005e7240] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2 [format @ 00000000005e7600] compat: called with args=[yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16|nv21] [format @ 00000000005e7600] Setting 'pix_fmts' to value 'yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16|nv21' [AVFilterGraph @ 00000000005e30c0] query_formats: 5 queried, 4 merged, 0 already done, 0 delayed [libx264 @ 00000000005f44a0] using mv_range_thread = 56 [libx264 @ 00000000005f44a0] using SAR=1/1 [libx264 @ 00000000005f44a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 LZCNT BMI2 [libx264 @ 00000000005f44a0] profile High, level 3.1 [libx264 @ 00000000005f44a0] 264 - core 148 r2665 a01e339 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 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=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to 'textwithborder.mp4': Metadata: encoder : Lavf57.28.102 Stream #0:0, 0, 1/12800: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc Metadata: encoder : Lavc57.28.103 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 Stream mapping: Stream #0:0 (rawvideo) -> drawtext drawtext -> Stream #0:0 (libx264) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) [rawvideo @ 00000000003ca3c0] PACKET SIZE: 1382400, STRIDE: 1920 [Parsed_drawtext_0 @ 00000000005e73c0] Copying data in avfilter.
Windows Error:
Problem signature: Problem Event Name: APPCRASH Application Name: ffmpeg.exe Application Version: 0.0.0.0 Application Timestamp: a528a508 Fault Module Name: StackHash_a90e Fault Module Version: 6.1.7600.16385 Fault Module Timestamp: 4a5be02b Exception Code: c0000374 Exception Offset: 00000000000c6cd2 OS Version: 6.1.7600.2.0.0.256.1 Locale ID: 1033 Additional Information 1: a90e Additional Information 2: a90e2c32031d7513030a0c0a3edb6e5d Additional Information 3: ac17 Additional Information 4: ac177ea7eaeeb184d564166faca9bf33
Font files bpmono.ttf (error-producing) and cour.ttf (error-free) attached.
Attachments (1)
Change History (5)
by , 9 years ago
Attachment: | BPMONO.TTF added |
---|
comment:1 by , 9 years ago
Component: | undetermined → avfilter |
---|---|
Priority: | normal → important |
Reproduced by developer: | set |
Status: | new → open |
(gdb) r -f lavfi -i "color=black:s=1280x720" -filter_complex "drawtext=fontfile=BPMONO.TTF:text='Hello World':fontcolor=white@1.0:fontsize=16:borderw=5:x=w-tw-10:y=10:box=1:boxcolor=black@0.5" -qscale 2 -t 5 out.avi Starting program: ffmpeg_g -f lavfi -i "color=black:s=1280x720" -filter_complex "drawtext=fontfile=BPMONO.TTF:text='Hello World':fontcolor=white@1.0:fontsize=16:borderw=5:x=w-tw-10:y=10:box=1:boxcolor=black@0.5" -qscale 2 -t 5 out.avi [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". ffmpeg version N-79068-g6b7ce0e Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.7 (SUSE Linux) configuration: --enable-gpl --enable-libfreetype --enable-fontconfig libavutil 55. 19.100 / 55. 19.100 libavcodec 57. 28.103 / 57. 28.103 libavformat 57. 28.102 / 57. 28.102 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 39.102 / 6. 39.102 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 [New Thread 0x7ffff0e05700 (LWP 14955)] [New Thread 0x7ffff0604700 (LWP 14956)] [New Thread 0x7fffefe03700 (LWP 14957)] [New Thread 0x7fffef602700 (LWP 14958)] [New Thread 0x7fffeee01700 (LWP 14959)] [New Thread 0x7fffee600700 (LWP 14960)] [New Thread 0x7fffeddff700 (LWP 14961)] [New Thread 0x7fffed5fe700 (LWP 14962)] [New Thread 0x7fffecdfd700 (LWP 14963)] Input #0, lavfi, from 'color=black:s=1280x720': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc [New Thread 0x7fffec4aa700 (LWP 14964)] [New Thread 0x7fffebca9700 (LWP 14965)] [New Thread 0x7fffeb4a8700 (LWP 14966)] [New Thread 0x7fffeaca7700 (LWP 14967)] [New Thread 0x7fffea4a6700 (LWP 14968)] [New Thread 0x7fffe9ca5700 (LWP 14969)] [New Thread 0x7fffe94a4700 (LWP 14970)] [New Thread 0x7fffe8ca3700 (LWP 14971)] [New Thread 0x7fffe84a2700 (LWP 14972)] [Thread 0x7fffe9ca5700 (LWP 14969) exited] [Thread 0x7fffe84a2700 (LWP 14972) exited] [Thread 0x7fffec4aa700 (LWP 14964) exited] [Thread 0x7fffe8ca3700 (LWP 14971) exited] [Thread 0x7fffea4a6700 (LWP 14968) exited] [Thread 0x7fffe94a4700 (LWP 14970) exited] [Thread 0x7fffebca9700 (LWP 14965) exited] [Thread 0x7fffeaca7700 (LWP 14967) exited] [Thread 0x7fffeb4a8700 (LWP 14966) exited] Please use -q:a or -q:v, -qscale is ambiguous [New Thread 0x7fffe84a2700 (LWP 14973)] [New Thread 0x7fffe8ca3700 (LWP 14974)] [New Thread 0x7fffe94a4700 (LWP 14975)] [New Thread 0x7fffe9ca5700 (LWP 14976)] [New Thread 0x7fffec4aa700 (LWP 14977)] [New Thread 0x7fffebca9700 (LWP 14978)] [New Thread 0x7fffeb4a8700 (LWP 14979)] [New Thread 0x7fffeaca7700 (LWP 14980)] [New Thread 0x7fffea4a6700 (LWP 14981)] [New Thread 0x7fffe7ca1700 (LWP 14982)] [New Thread 0x7fffe74a0700 (LWP 14983)] [New Thread 0x7fffe6c9f700 (LWP 14984)] [New Thread 0x7fffe649e700 (LWP 14985)] [New Thread 0x7fffe5c9d700 (LWP 14986)] [New Thread 0x7fffe549c700 (LWP 14987)] [New Thread 0x7fffe4c9b700 (LWP 14988)] [New Thread 0x7fffe449a700 (LWP 14989)] [New Thread 0x7fffe3c99700 (LWP 14990)] Output #0, avi, to 'out.avi': Metadata: ISFT : Lavf57.28.102 Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc57.28.103 mpeg4 Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 Stream mapping: Stream #0:0 (rawvideo) -> drawtext drawtext -> Stream #0:0 (mpeg4) Press [q] to stop, [?] for help Program received signal SIGSEGV, Segmentation fault. draw_text (ctx=ctx@entry=0x1e2baa0, frame=0x1ee23c0, width=1280, height=720) at libavfilter/vf_drawtext.c:1228 1228 y_min = FFMIN(glyph->bbox.yMin, y_min); (gdb) bt #0 draw_text (ctx=ctx@entry=0x1e2baa0, frame=0x1ee23c0, width=1280, height=720) at libavfilter/vf_drawtext.c:1228 #1 0x00000000004f30c0 in filter_frame (inlink=inlink@entry=0x1e39d60, frame=0x1) at libavfilter/vf_drawtext.c:1351 #2 0x00000000004b805e in ff_filter_frame_framed (link=link@entry=0x1e39d60, frame=0x1) at libavfilter/avfilter.c:1123 #3 0x00000000004b8e47 in ff_filter_frame (link=link@entry=0x1e39d60, frame=0x1ee2180) at libavfilter/avfilter.c:1221 #4 0x00000000004bcfc2 in request_frame (link=0x1e39d60) at libavfilter/buffersrc.c:450 #5 0x00000000004bd25b in av_buffersrc_add_frame_internal (ctx=ctx@entry=0x1e39160, frame=frame@entry=0x1ee1d00, flags=flags@entry=4) at libavfilter/buffersrc.c:239 #6 0x00000000004bd70d in av_buffersrc_add_frame_flags (ctx=0x1e39160, frame=frame@entry=0x1ee1d00, flags=flags@entry=4) at libavfilter/buffersrc.c:164 #7 0x0000000000499f92 in decode_video (ist=ist@entry=0x1e1e280, pkt=pkt@entry=0x7fffffffda00, got_output=got_output@entry=0x7fffffffd6fc) at ffmpeg.c:2187 #8 0x000000000049d1bd in process_input_packet (no_eof=0, pkt=0x7fffffffd9a0, ist=0x1e1e280) at ffmpeg.c:2331 #9 process_input (file_index=0) at ffmpeg.c:4001 #10 transcode_step () at ffmpeg.c:4089 #11 transcode () at ffmpeg.c:4143 #12 0x000000000047f29b in main (argc=<optimized out>, argv=0x7fffffffdc48) at ffmpeg.c:4334 (gdb) disass $pc-32,$pc+32 Dump of assembler code from 0x4f2522 to 0x4f2562: 0x00000000004f2522 <draw_text+546>: rex.R and $0x40,%al 0x00000000004f2525 <draw_text+549>: callq 0x107fde0 <av_tree_find> 0x00000000004f252a <draw_text+554>: test %rax,%rax 0x00000000004f252d <draw_text+557>: mov %rax,0x70(%rsp) 0x00000000004f2532 <draw_text+562>: mov 0x40(%rsp),%r8d 0x00000000004f2537 <draw_text+567>: movslq 0x20(%rsp),%r9 0x00000000004f253c <draw_text+572>: je 0x4f2f19 <draw_text+3097> => 0x00000000004f2542 <draw_text+578>: mov 0x70(%rax),%rdx 0x00000000004f2546 <draw_text+582>: movslq %r14d,%r14 0x00000000004f2549 <draw_text+585>: movzbl 0x0(%r13),%ecx 0x00000000004f254e <draw_text+590>: movslq %ebx,%rbx 0x00000000004f2551 <draw_text+593>: movslq %r15d,%r15 0x00000000004f2554 <draw_text+596>: cmp %rdx,%r14 0x00000000004f2557 <draw_text+599>: cmovg %rdx,%r14 0x00000000004f255b <draw_text+603>: mov 0x80(%rax),%rdx End of assembler dump. (gdb) info register rax 0x0 0 rbx 0x7d00 32000 rcx 0x0 0 rdx 0x7ffff5050678 140737304135288 rsi 0x1 1 rdi 0x0 0 rbp 0x1e2bb40 0x1e2bb40 rsp 0x7fffffffce30 0x7fffffffce30 r8 0x0 0 r9 0xffffffffffff8300 -32000 r10 0x0 0 r11 0x7ffff4d360f2 140737300881650 r12 0x1e2baa0 31636128 r13 0x1e2bb7d 31636349 r14 0x7d00 32000 r15 0xffff8300 4294935296 rip 0x4f2542 0x4f2542 <draw_text+578> eflags 0x10206 [ PF IF RF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0
comment:2 by , 9 years ago
Keywords: | drawtext crash SIGSEGV added |
---|
comment:3 by , 9 years ago
Summary: | Use of borderw with attached font crashes ffmpeg on Windows → Use of borderw with attached font crashes ffmpeg |
---|
comment:4 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Note:
See TracTickets
for help on using tickets.
font file crashing ffmpeg when drawtext has borderw enabled.