[FFmpeg-soc] Segmentation Fault when using -vfilters "movie ...; overlay"

Brandon Mintern bmintern at gmail.com
Fri Mar 26 01:15:27 CET 2010


I am trying to overlay a transparent PNG (using alpha blending) of size 800x600
on an 11-second wmv file of size 800x600. In doing so, I get a Segmentation
Fault immediately after the "Press [q] to stop encoding" message comes up.

I already filed a bug at https://roundup.ffmpeg.org/issue1841 but
cehoyos (the only responder thus far) said, "Imo, problems with a
patch from the soc repository should be reported to the ffmpeg-soc
mailing list."

I'll provide here all of the information that I have provided so far
in my bug report.

The command I executed:

ffmpeg -y -i intro-base.wmv -vfilters "movie=0:png:title-overlay.png [title];
[in][title] overlay=0:0:1 [out]" -vcodec wmv2 intro-title.wmv

I have tried it both with and without the "[out]", with no change. When I omit
all -vfilters stuff, the command works fine, so I'm quite sure the segfault is
happening as a result of the libavfilter operations.

My libavfilter info:

$ svn info libavfilter
Path: libavfilter
URL: svn://svn.ffmpeg.org/soc/libavfilter
Repository Root: svn://svn.ffmpeg.org/soc
Repository UUID: 66570020-b32e-0410-962d-e44e8f9afd43
Revision: 5717
Node Kind: directory
Schedule: normal
Last Changed Author: stefano
Last Changed Rev: 5717
Last Changed Date: 2010-03-24 19:25:00 -0400 (Wed, 24 Mar 2010)

To build ffmpeg with libavfilter, I followed this process:
http://ubuntuforums.org/showthread.php?t=1438052 (skip down to "Updating to
latest..." for a quick look at how I'm doing it). I wrote that guide yesterday;
it's quite possible I'm making a mistake in the build process.

My ffmpeg info:

$ ffmpeg -v 9 -loglevel 99 -i intro-base.wmv
FFmpeg version SVN-r22626, Copyright (c) 2000-2010 the FFmpeg developers
  built on Mar 25 2010 02:46:11 with gcc 4.4.1
  configuration: --enable-gpl --enable-version3 --enable-nonfree
--enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter
--enable-avfilter-lavf --enable-debug
  libavutil     50.12. 0 / 50.12. 0
  libavcodec    52.59. 0 / 52.59. 0
  libavformat   52.56. 1 / 52.56. 1
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.18. 0 /  1.18. 0
  libswscale     0.10. 0 /  0.10. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[NULL @ 0x90d93d0]Probed with size=2048 and score=100
[asf @ 0x90d93d0]Unsupported value type 1 in tag ASFLeakyBucketPairs.
[wmv3 @ 0x90e7eb0]Header: 47F10801
[wmv3 @ 0x90e7eb0]Profile 1:
frmrtq_postproc=3, bitrtq_postproc=31
LoopFilter=0, MultiRes=0, FastUVMC=0, Extended MV=0
Rangered=0, VSTransform=1, Overlap=0, SyncMarker=0
DQuant=0, Quantizer mode=0, Max B frames=0
[wmv3 @ 0x90e7eb0]Extra data: 8 bits left, value: 0
[asf @ 0x90d93d0]All info found

Seems stream 1 codec frame rate differs from container frame rate: 1000.00
(1000/1) -> 15.00 (15/1)
Input #0, asf, from 'intro-base.wmv':
  Metadata:
    title           : GS-IntroV2
    author          :
    copyright       :
    comment         :
    WMFSDKVersion   : 11.0.5721.5145
    WMFSDKNeeded    : 0.0.0.0000
    IsVBR           : 1
    VBR Peak        : 240
    Buffer Average  : 716
  Duration: 00:00:11.33, start: 5.000000, bitrate: 409 kb/s
    Stream #0.0(eng), 8, 1/1000: Audio: wmav2, 44100 Hz, 1 channels,
s16, 48 kb/s
    Stream #0.1(eng), 21, 1/1000: Video: wmv3, yuv420p, 800x600, 1/1000, 343
kb/s, 15 tbr, 1k tbn, 1k tbc


The program as run under gdb

$ gdb --args ~/ffmpeg-x264-avfilter/libavfilter/ffmpeg/ffmpeg_g -y -i
intro-base.wmv
-vfilters "movie=0:png:title-overlay.png [title]; [in][title] overlay=0:0:1"
-vcodec wmv2 intro-title.wmv
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from
/home/brandon/ffmpeg-x264-avfilter/libavfilter/ffmpeg/ffmpeg_g...done.
(gdb) r
Starting program:
/home/brandon/ffmpeg-x264-avfilter/libavfilter/ffmpeg/ffmpeg_g -y -i
intro-base.wmv -vfilters movie=0:png:title-overlay.png\ \[title\]\;\
\[in\]\[title\]\ overlay=0:0:1 -vcodec wmv2 intro-title.wmv
[Thread debugging using libthread_db enabled]
FFmpeg version SVN-r22626, Copyright (c) 2000-2010 the FFmpeg developers
  built on Mar 25 2010 02:46:11 with gcc 4.4.1
  configuration: --enable-gpl --enable-version3 --enable-nonfree
--enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter
--enable-avfilter-lavf --enable-debug
  libavutil     50.12. 0 / 50.12. 0
  libavcodec    52.59. 0 / 52.59. 0
  libavformat   52.56. 1 / 52.56. 1
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.18. 0 /  1.18. 0
  libswscale     0.10. 0 /  0.10. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[wmv3 @ 0x8c94eb0]Extra data: 8 bits left, value: 0

Seems stream 1 codec frame rate differs from container frame rate: 1000.00
(1000/1) -> 15.00 (15/1)
Input #0, asf, from 'intro-base.wmv':
  Metadata:
    title           : GS-IntroV2
    author          :
    copyright       :
    comment         :
    WMFSDKVersion   : 11.0.5721.5145
    WMFSDKNeeded    : 0.0.0.0000
    IsVBR           : 1
    VBR Peak        : 240
    Buffer Average  : 716
  Duration: 00:00:11.33, start: 5.000000, bitrate: 409 kb/s
    Stream #0.0(eng): Audio: wmav2, 44100 Hz, 1 channels, s16, 48 kb/s
    Stream #0.1(eng): Video: wmv3, yuv420p, 800x600, 343 kb/s, 15 tbr, 1k tbn,
1k tbc
[overlay @ 0x8cc55c0]auto-inserting filter 'auto-inserted scaler 0' between the
filter 'Parsed filter 0' and the filter 'Parsed filter 1'
[scale @ 0x8cc5d10]w:800 h:600 fmt:yuva420p
[wmv3 @ 0x8c94eb0]Extra data: 8 bits left, value: 0
Output #0, asf, to 'intro-title.wmv':
  Metadata:
    WM/EncodingSettings: Lavf52.56.1
    Stream #0.0(eng): Video: wmv2, yuv420p, 800x600, q=2-31, 200 kb/s, 1k tbn,
15 tbc
    Stream #0.1(eng): Audio: libmp3lame, 44100 Hz, 1 channels, s16, 64 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding

Program received signal SIGSEGV, Segmentation fault.
0x08076ace in output_packet (ist=0x8ca3a10, ist_index=<value optimized out>,
    ost_table=<value optimized out>, nb_ostreams=2, pkt=0xbfffe460)
    at ffmpeg.c:1692
1692	                            ost->st->codec->sample_aspect_ratio =
ist->picref->pixel_aspect;
(gdb) bt
#0  0x08076ace in output_packet (ist=0x8ca3a40,
    ist_index=<value optimized out>, ost_table=<value optimized out>,
    nb_ostreams=2, pkt=0xbfffe460) at ffmpeg.c:1692
#1  0x0807ccf2 in av_encode (nb_output_files=<value optimized out>,
    nb_input_files=<value optimized out>,
    nb_stream_maps=<value optimized out>, stream_maps=<value optimized out>,
    input_files=<value optimized out>, output_files=<value optimized out>)
    at ffmpeg.c:2617
#2  0x0807d71b in main (argc=9, argv=0xbffff3a4) at ffmpeg.c:4375
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x8076aae to 0x8076aee:
0x08076aae <output_packet+2350>:	add    %al,-0x7bf0fc08(%ebx)
0x08076ab4 <output_packet+2356>:	nop
0x08076ab5 <output_packet+2357>:	or     %al,(%eax)
0x08076ab7 <output_packet+2359>:	add    %al,-0x7f7af040(%ebp)
0x08076abd <output_packet+2365>:	or     %al,(%eax)
0x08076abf <output_packet+2367>:	add    %cl,-0x4372afbb(%ebx)
0x08076ac5 <output_packet+2373>:	and    $0x80,%al
0x08076ac7 <output_packet+2375>:	add    (%eax),%al
0x08076ac9 <output_packet+2377>:	add    %cl,-0x7487db8c(%ebx)
0x08076acf <output_packet+2383>:	push   %eax
0x08076ad0 <output_packet+2384>:	inc    %eax
0x08076ad1 <output_packet+2385>:	mov    0x3c(%eax),%eax
0x08076ad4 <output_packet+2388>:	mov    %edx,0x18c(%esi)
0x08076ada <output_packet+2394>:	mov    %eax,0x188(%esi)
0x08076ae0 <output_packet+2400>:	mov    %edi,(%esp)
0x08076ae3 <output_packet+2403>:	lea    0x1b4(%esp),%edi
0x08076aea <output_packet+2410>:	call   0x837b6a0 <avcodec_get_frame_defaults>
End of assembler dump.
(gdb) info all-registers
eax            0x0	0
ecx            0x1	1
edx            0x2	2
ebx            0x8ca3ae0	147471072
esp            0xbfffdde0	0xbfffdde0
ebp            0x8ca3a40	0x8ca3a40
esi            0x8c96500	147416320
edi            0xbfffe060	-1073749920
eip            0x8076ace	0x8076ace <output_packet+2382>
eflags         0x10246	[ PF ZF IF RF ]
cs             0x73	115
ss             0x7b	123
ds             0x7b	123
es             0x7b	123
fs             0x0	0
gs             0x33	51
st0            -nan(0x8080808080808080)	(raw 0xffff8080808080808080)
st1            -nan(0x80008000800080)	(raw 0xffff0080008000800080)
st2            -nan(0x8080808080808080)	(raw 0xffff8080808080808080)
st3            -nan(0x80008000800080)	(raw 0xffff0080008000800080)
st4            -nan(0x8080808080808080)	(raw 0xffff8080808080808080)
st5            -nan(0x80008000800080)	(raw 0xffff0080008000800080)
st6            -nan(0x8080808080808080)	(raw 0xffff8080808080808080)
st7            0	(raw 0x00000000000000000000)
fctrl          0x37f	895
fstat          0x4020	16416
ftag           0xffff	65535
fiseg          0x73	115
fioff          0x8077eb4	134708916
foseg          0x7b	123
fooff          0x8c94d0c	147410188
fop            0x15e	350
xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm1           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
---Type <return> to continue, or q <return> to quit---
  uint128 = 0x00000000000000000000000000000000}
xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm5           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm6           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm7           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0},
  v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
mxcsr          0x1f80	[ IM DM ZM OM UM PM ]
mm0            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080,
    0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm1            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080},
  v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80,
    0x0, 0x80, 0x0}}
mm2            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080,
    0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm3            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080},
  v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80,
    0x0, 0x80, 0x0}}
mm4            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080,
    0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm5            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080},
  v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80,
    0x0, 0x80, 0x0}}
mm6            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080,
    0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
---Type <return> to continue, or q <return> to quit---
mm7            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
    0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}



If there's anything else I can provide to help this along, I'd be happy to do
so. I can upload the 2 sample files somewhere if that will be of assistance.


More information about the FFmpeg-soc mailing list