[MPlayer-users] BUGREPORT: mencoder -vc mpeg12 -ovc lavc -- reproducible segfault at _end_ of DVD
Corey Hickey
bugfood-ml at fatooh.org
Tue Aug 5 21:40:59 CEST 2003
Corey Hickey wrote:
> [Automatic answer: RTFM (read DOCS, FAQ), also read DOCS/bugreports.html]
> First off, I'm not sure if this is a bug in mplayer or in libavcodec, so
> if I should cross-post this to the ffmpeg-devel list, someone please
> tell me and I'll be happy to do so.
Since I didn't get a response here, I went ahead and asked on the
ffmpeg-devel list anyway. I quote Michael Niedermayer:
"hmm, may be a mplayer bug, avcodec_open is called several times and no
close "
So, here I am again. Could someone please have a look at this? I really
want to be able to use libmpeg2 so as to make use of the new
softpulldown filter. :) Should I post on mplayer-dev-eng instead?
Thanks again,
Corey
The quoted text below is my original bugreport:
>
> Anyway, I am able to easily reproduce a segmentation fault in mencoder
> when it reaches the end of a DVD. I'm using mplayer CVS and libavcodec
> CVS from a few minutes ago, and have reduced the case to:
>
> mencoder end-of-dvd-segfault.vob -nosound -vc mpeg12 \
> -ovc lavc -lavcopts vbitrate=800:vcodec=mpeg4:vpass=1
>
> Changing mpeg12 to ffmpeg12 works fine. Also, mencoder 0.90 has no
> trouble.
>
> I am uploading a bugreport with sample file to mplayerhq ftp:
> end-of-dvd-segfault.txt --- The text of this mail
> end-of-dvd-segfault.vob --- mplayer dvd://1 -dumpstream, and then
> the very last part extracted with dd (yes, I know it's just a second of
> black frames, but mencoder behaves just the same as when it has the
> entire file.
>
> For anyone who doesn't have mplayerhq ftp access, both of the files
> listed above are also available at:
> http://bugfood.casa-z.org/mpbug/
>
> Thanks,
> Corey
>
>
> ~~~~~~~~system information~~~~~~~~~~~
>
> Debian sarge (testing)
>
> Linux 2.4.21
>
> bugfood at bugfood:~$ ls -l /lib/libc[.-]*
> -rwxr-xr-x 1 root root 1104040 Mar 21 08:19 /lib/libc-2.3.1.so
> lrwxrwxrwx 1 root root 14 Oct 4 2002 /lib/libc.so.5
> -> libc.so.5.4.46
> -rw-r--r-- 1 root root 563068 Feb 4 2002 /lib/libc.so.5.4.46
> lrwxrwxrwx 1 root root 13 Apr 1 13:19 /lib/libc.so.6
> -> libc-2.3.1.so
>
> gcc version 3.2.3 20030415 (Debian prerelease)
> NOTE: also tested with:
> gcc version 2.95.4 20011002 (Debian prerelease)
>
>
> GNU ld version 2.14.90.0.4 20030523 Debian GNU/Linux
>
> GNU assembler 2.14.90.0.4 20030523 Debian GNU/Linux
>
> bugfood at bugfood:~$ cat /proc/cpuinfo
> processor : 0
> vendor_id : AuthenticAMD
> cpu family : 6
> model : 8
> model name : AMD Athlon(tm)
> stepping : 0
> cpu MHz : 1890.053
> cache size : 256 KB
> fdiv_bug : no
> hlt_bug : no
> f00f_bug : no
> coma_bug : no
> fpu : yes
> fpu_exception : yes
> cpuid level : 1
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
> mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow
> bogomips : 3761.76
>
>
> ~~~~~~~~~~~~~~GDB information~~~~~~~~~~~~~~~~~
>
> bugfood at bugfood:~/mpbug$ gdb mencoder
> GNU gdb 5.3-debian
> Copyright 2002 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
> are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "i386-linux"...(no debugging symbols found)...
> (gdb) run -v end-of-dvd-segfault.vob -ovc lavc -lavcopts
> vbitrate=800:vcodec=mpeg4:vpass=1 -nosound -vc mpeg12
> Starting program: /usr/bin/mencoder -v end-of-dvd-segfault.vob -ovc lavc
> -lavcopts vbitrate=800:vcodec=mpeg4:vpass=1 -nosound -vc mpeg12
> (no debugging symbols found)...(no debugging symbols found)...(no
> debugging symbols found)...
> (no debugging symbols found)...(no debugging symbols found)...(no
> debugging symbols found)...
> (no debugging symbols found)...(no debugging symbols found)...(no
> debugging symbols found)...
> (no debugging symbols found)...(no debugging symbols found)...(no
> debugging symbols found)...[New Thread 16384 (LWP 23950)]
> Using GNU internationalization
> Original domain: messages
> Original dirname: /usr/share/locale
> Current domain: mplayer
> Current dirname: /usr/share/locale
>
> MEncoder dev-CVS-030803-19:37-3.2.3 (C) 2000-2003 MPlayer Team
>
> CPU: Advanced Micro Devices (Family: 6, Stepping: 0)
> Detected cache-line size is 64 bytes
> CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
> Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE
>
> Reading /home/bugfood/.mplayer/codecs.conf: This codecs.conf is too old
> and incompatible with this MPlayer release! at line 6
> Reading /etc/mplayer/codecs.conf: This codecs.conf is too old and
> incompatible with this MPlayer release! at line 6
> Using built-in default codecs.conf
> File not found: 'frameno.avi'
> Failed to open frameno.avi
> Reading config file /home/bugfood/.mplayer/mencoder: No such file or
> directory
> init_freetype
> Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay
> Not an URL!
> [file] File size is 151552 bytes
> STREAM: [file] end-of-dvd-segfault.vob
> STREAM: Description: File
> STREAM: Author: Albeu
> STREAM: Comment: based on the code from ??? (probably Arpi)
> success: format: 0 data: 0x0 - 0x25000
> Checking for YUV4MPEG2
> DEMUXER: freeing demuxer at 0x84575a8
> ASF_check: not ASF guid!
> DEMUXER: freeing demuxer at 0x84575a8
> Checking for NuppelVideo
> DEMUXER: freeing demuxer at 0x84575a8
> Checking for REAL
> DEMUXER: freeing demuxer at 0x84575a8
> Checking for SMJPEG
> DEMUXER: freeing demuxer at 0x84575a8
> DEMUXER: freeing demuxer at 0x8457f48
> Searching demuxer type for filename end-of-dvd-segfault.vob ext: .vob
> Trying demuxer 2 based on filename extension
> system stream synced at 0xD (0)!
> ==> Found audio stream: 131
> ==> Found video stream: 0
> MPEG-PS file format detected.
> Searching for sequence header... OK!
> VIDEO: MPEG2 720x480 (aspect 3) 29.97 fps 9201.6 kbps (1150.2 kbyte/s)
> [V] filefmt:2 fourcc:0x10000002 size:720x480 fps:29.97 ftime:=0.0334
> Opening video filter: [expand osd=1]
> Expand: -1 x -1, -1 ; -1 (-1=autodetect) osd: 1
> ==========================================================================
> Forced video codec: mpeg12
> Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.3.1
> Selected video codec: [mpeg12] vfm:libmpeg2 (MPEG 1 or 2 (libmpeg2))
> ==========================================================================
> Writing AVI header...
> VDec: vo config request - 720 x 480 (preferred csp: Planar YV12)
> Trying filter chain: expand lavc
> VDec: using Planar YV12 as output csp (no 0)
> Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
> VO Config (720x480->854x480,flags=0,'MPlayer',0x32315659)
> REQ: flags=0x401 req=0x0
> videocodec: libavcodec (720x480 fourcc=58564944 [DIVX])
> get_path('subfont.ttf') -> '/home/bugfood/.mplayer/subfont.ttf'
> New_Face failed. Maybe the font path is wrong.
> Please supply the text font file (~/.mplayer/subfont.ttf).
> subtitle font: load_sub_face failed.
> *** [lavc] Allocating mp_image_t, 720x480x12bpp YUV planar, 518400 bytes
> *** [expand] Direct Rendering mp_image_t, 720x480x12bpp YUV planar,
> 518400 bytes
> *** [lavc] Allocating mp_image_t, 720x480x12bpp YUV planar, 518400
> bytesms 0/8 D/B/S 0/1/0
> *** [expand] Direct Rendering mp_image_t, 720x480x12bpp YUV planar,
> 518400 bytes
> *** [lavc] Allocating mp_image_t, 720x480x12bpp YUV planar, 518400
> bytesms 0/11 D/B/S 2/1/0
> *** [expand] Direct Rendering mp_image_t, 720x480x12bpp YUV planar,
> 518400 bytes
> Pos: 0.2s 4f (12%) 0fps Trem: 0min 0mb A-V:0.000 [0:0]
> A/Vms 0/12 D/B/S 2/1/0
> demux_mpg: 3:2 TELECINE detected, enabling inverse telecine fx. FPS
> changed to 23.976!
> ==> Found audio stream: 128 0fps Trem: 0min 0mb A-V:0.000 [0:0]
> A/Vms 0/10 D/B/S 6/1/0
> ==> Found audio stream: 129
> ==> Found audio stream: 130
> VDec: vo config request - 720 x 480 (preferred csp: Planar YV12)
> Trying filter chain: expand lavc
> VDec: using Planar YV12 as output csp (no 0)
> Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
> VO Config (720x480->854x480,flags=0,'MPlayer',0x32315659)
> REQ: flags=0x401 req=0x0
> videocodec: libavcodec (720x480 fourcc=58564944 [DIVX])
> get_buffer() failed (0 -8 0 0x40f51f30)
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 16384 (LWP 23950)]
> 0x081a074a in ff_copy_bits ()
> (gdb) bt
> #0 0x081a074a in ff_copy_bits ()
> #1 0x0819c28f in MPV_encode_picture ()
> #2 0x08197d4a in avcodec_encode_video ()
> #3 0x080aae60 in vf_open_encoder ()
> #4 0x080c28f9 in vf_next_put_image ()
> #5 0x080b56d1 in decode_video ()
> #6 0x080850d1 in main ()
> #7 0x405cda51 in __libc_start_main () from /lib/libc.so.6
> (gdb) disass $pc-32 $pc+32
> Dump of assembler code from 0x81a072a to 0x81a076a:
> 0x81a072a <ff_copy_bits+9066>: out %al,(%dx)
> 0x81a072b <ff_copy_bits+9067>: add $0xfe,%cl
> 0x81a072e <ff_copy_bits+9070>: or %cl,0x8eac1f3(%ecx)
> 0x81a0734 <ff_copy_bits+9076>: add 0xfffe6468(%ebp),%ecx
> 0x81a073a <ff_copy_bits+9082>: sub %edx,%eax
> 0x81a073c <ff_copy_bits+9084>: mov 0x1258(%edi),%edx
> 0x81a0742 <ff_copy_bits+9090>: add $0x274,%eax
> 0x81a0747 <ff_copy_bits+9095>: shr $0x8,%eax
> 0x81a074a <ff_copy_bits+9098>: mov %ax,(%edx,%ecx,2)
> 0x81a074e <ff_copy_bits+9102>: mov 0x1260(%edi),%edx
> 0x81a0754 <ff_copy_bits+9108>: mov %bl,(%ecx,%edx,1)
> 0x81a0757 <ff_copy_bits+9111>: incl 0xfffe6468(%ebp)
> 0x81a075d <ff_copy_bits+9117>: add %eax,0x1250(%edi)
> 0x81a0763 <ff_copy_bits+9123>: mov 0x9c(%edi),%eax
> 0x81a0769 <ff_copy_bits+9129>: cmp %eax,0xfffe6468(%ebp)
> End of assembler dump.
> (gdb) info all-registers
> eax 0x101 257
> ecx 0x0 0
> edx 0x0 0
> ebx 0x1 1
> esp 0xbffe4840 0xbffe4840
> ebp 0xbfffe468 0xbfffe468
> esi 0x1 1
> edi 0x85540e0 139804896
> eip 0x81a074a 0x81a074a
> eflags 0x210212 2163218
> cs 0x23 35
> ss 0x2b 43
> ds 0x2b 43
> es 0x2b 43
> fs 0x0 0
> gs 0x0 0
> st0 -0e+4922 (raw 0xffff0000000000000000)
> st1 -nan(0x800000010000) (raw 0xffff0000800000010000)
> st2 -nan(0x40000000400) (raw 0xffff0000040000000400)
> st3 -nan(0x20000000200) (raw 0xffff0000020000000200)
> st4 -nan(0x40000000400) (raw 0xffff0000040000000400)
> st5 -nan(0x40004000800080) (raw 0xffff0040004000800080)
> st6 -nan(0x40008000c00100) (raw 0xffff0040008000c00100)
> st7 -nan(0x000008000) (raw 0xffff0000000000008000)
> fctrl 0x37f 895
> fstat 0x120 288
> ftag 0xaaaa 43690
> fiseg 0x0 0
> fioff 0x0 0
> foseg 0x0 0
> fooff 0x0 0
> fop 0x0 0
> xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm2 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> ---Type <return> to continue, or q <return> to quit---
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
> {0x8000000000000000, 0x8000000000000000},
> v16_int8 = {0xff <repeats 16 times>}, v8_int16 = {0xffff, 0xffff,
> 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
> 0xffff}, v4_int32 = {0xffffffff, 0xffffffff, 0xffffffff,
> 0xffffffff}, v2_int64 = {0xffffffffffffffff,
> 0xffffffffffffffff}, uint128 = 0xffffffffffffffffffffffffffffffff}
> mxcsr 0x1f80 8064
> orig_eax 0xffffffff -1
> mm0 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0,
> 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0,
> 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
> mm1 {uint64 = 0x800000010000, v2_int32 = {0x10000, 0x8000},
> v4_int16 = {0x0, 0x1, 0x8000, 0x0},
> v8_int8 = {0x0, 0x0, 0x1, 0x0, 0x0, 0x80, 0x0, 0x0}}
> mm2 {uint64 = 0x40000000400, v2_int32 = {0x400, 0x400},
> v4_int16 = {0x400, 0x0, 0x400, 0x0},
> v8_int8 = {0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0}}
> mm3 {uint64 = 0x20000000200, v2_int32 = {0x200, 0x200},
> v4_int16 = {0x200, 0x0, 0x200, 0x0},
> v8_int8 = {0x0, 0x2, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0}}
> mm4 {uint64 = 0x40000000400, v2_int32 = {0x400, 0x400},
> v4_int16 = {0x400, 0x0, 0x400, 0x0},
> v8_int8 = {0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0}}
> mm5 {uint64 = 0x40004000800080, v2_int32 = {0x800080,
> 0x400040}, v4_int16 = {0x80, 0x80, 0x40,
> 0x40}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x40, 0x0, 0x40, 0x0}}
> mm6 {uint64 = 0x40008000c00100, v2_int32 = {0xc00100,
> 0x400080}, v4_int16 = {0x100, 0xc0, 0x80,
> 0x40}, v8_int8 = {0x0, 0x1, 0xc0, 0x0, 0x80, 0x0, 0x40, 0x0}}
> mm7 {uint64 = 0x8000, v2_int32 = {0x8000, 0x0}, v4_int16 =
> {0x8000, 0x0, 0x0, 0x0}, v8_int8 = {
> 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
> (gdb)
>
> ~~~~~~~~~~~~~~~~~end of bugreport~~~~~~~~~~~~~~~~~~~~~
>
> _______________________________________________
> RTFM!!! http://www.MPlayerHQ.hu/DOCS
> Search: http://www.MPlayerHQ.hu/cgi-bin/htsearch
> http://mplayerhq.hu/mailman/listinfo/mplayer-users
>
More information about the MPlayer-users
mailing list