[Ffmpeg-devel] WMV3 segfaults in vc1_decode_intra_block()

Nikns Siankin nikns
Mon Dec 11 12:08:22 CET 2006


Sample: http://pazeme.lv/nokia_n90.wmv

# uname -a
OpenBSD obsd.my.domain 4.0 GENERIC#690 amd64

# gdb ffmpeg_g
GNU gdb 6.3   
Copyright 2004 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 "amd64-unknown-openbsd4.0"...(no debugging symbols found)

(gdb) r -i /tmp/nokia_n90.wmv /tmp/nokia.avi
Starting program: /usr/ports/graphics/ffmpeg/w-ffmpeg-20061211/ffmpeg-cvs-20061211/ffmpeg_g -i 
/tmp/nokia_n90.wmv /tm  p/nokia.avi
FFmpeg version SVN-r7274, Copyright (c) 2000-2006 Fabrice Bellard, et al.
  configuration:  --enable-shared --cc=cc --disable-opts --enable-a52 --enable-pp --enable-gpl 
--enable-pthreads --di  sable-debug --enable-faac --enable-faad
--enable-mp3lame --enable-libogg --enable-vorbis --extra-ldflags=-lm -L/usr/l  ocal/lib 
--extra-cflags=-I/usr/local/include
  libavutil version: 49.1.0
  libavcodec version: 51.26.0
  libavformat version: 51.6.0
  built on Dec 11 2006 12:48:03, gcc: 3.3.5 (propolice)
Compiler did not align stack variables, libavcodec has been misscompiled
and will possible be very slow or may crash, this is not a bug in the   
application but in the compiler
so reporting it anywhere but to the compiler maintainers is senseless!

Seems stream 1 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1)
Input #0, asf, from '/tmp/nokia_n90.wmv':
  Duration: 00:00:27.0, start: 2.000000, bitrate: 597 kb/s
  Stream #0.0: Audio: wmav2, 44100 Hz, stereo, 64 kb/s
  Stream #0.1: Video: wmv3, yuv420p, 640x480, 25.00 fps(r)
Output #0, avi, to '/tmp/nokia.avi':
  Stream #0.0: Video: mpeg4, yuv420p, 640x480, q=2-31, 200 kb/s, 25.00 fps(c)
  Stream #0.1: Audio: mp2, 44100 Hz, stereo, 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.
[Switching to process 27339, thread 0x479c6000]
0x000000004b986625 in vc1_decode_intra_block () from /usr/local/lib/libavcodec.so.8.0
(gdb)
(gdb) bt
#0  0x000000004b986625 in vc1_decode_intra_block () from /usr/local/lib/libavcodec.so.8.0
#1  0x000000004b987741 in vc1_decode_p_mb () from /usr/local/lib/libavcodec.so.8.0
#2  0x000000004b98ad5a in vc1_decode_p_blocks () from /usr/local/lib/libavcodec.so.8.0
#3  0x000000004b98b8ff in vc1_decode_frame () from /usr/local/lib/libavcodec.so.8.0   
#4  0x000000004b75c43c in avcodec_decode_video () from /usr/local/lib/libavcodec.so.8.0
#5  0x00000000004061d2 in output_packet ()
#6  0x0000000000406dff in av_encode ()
#7  0x000000000040b035 in main ()
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x4b986605 to 0x4b986645:
0x000000004b986605 <vc1_decode_intra_block+597>:        rexX and    $0x40,%al
0x000000004b986608 <vc1_decode_intra_block+600>:        mov    0x7e8(%r12),%rdx
0x000000004b986610 <vc1_decode_intra_block+608>:        test   %ecx,%ecx
0x000000004b986612 <vc1_decode_intra_block+610>:        movsbl (%rax,%rdx,1),%r11d
0x000000004b986617 <vc1_decode_intra_block+615>:        je     0x4b986ac3 <vc1_decode_intra_block+1811>
0x000000004b98661d <vc1_decode_intra_block+621>:        mov    0x38(%rsp),%ecx
0x000000004b986621 <vc1_decode_intra_block+625>:        test   %ecx,%ecx
0x000000004b986623 <vc1_decode_intra_block+627>:        je     0x4b98662e <vc1_decode_intra_block+638>
0x000000004b986625 <vc1_decode_intra_block+629>:        movsbl 0xffffffffffffffff(%rax,%rdx,1),%edx
0x000000004b98662a <vc1_decode_intra_block+634>:        mov    %edx,0x30(%rsp)
0x000000004b98662e <vc1_decode_intra_block+638>:        test   %r15d,%r15d
0x000000004b986631 <vc1_decode_intra_block+641>:        je     0x4b986643 <vc1_decode_intra_block+659>
0x000000004b986633 <vc1_decode_intra_block+643>:        mov    0x30(%rsp),%eax
0x000000004b986637 <vc1_decode_intra_block+647>:        cmp    $0x3,%r15d
0x000000004b98663b <vc1_decode_intra_block+651>:        cmovle %r11d,%eax
0x000000004b98663f <vc1_decode_intra_block+655>:        mov    %eax,0x30(%rsp)
0x000000004b986643 <vc1_decode_intra_block+659>:        mov    0x48(%rsp),%eax
End of assembler dump.
(gdb) info all-registers
rax            0x0      0
rbx            0x434e5080       1129205888
rcx            0x1      1
rdx            0x4c039000       1275301888
rsi            0x1      1
rdi            0x0      0
rbp            0x411f3a60       0x411f3a60
rsp            0x7f7ffffd75c0   0x7f7ffffd75c0
r8             0x1      1
r9             0x411f3a40       1092565568
r10            0xc      12
r11            0xc      12
r12            0x4b501000       1263538176
r13            0x1      1
r14            0x19     25
r15            0x1      1
rip            0x4b986625       0x4b986625 <vc1_decode_intra_block+629>
eflags         0x210202 2163202
cs             0x1f     31
ss             0x17     23
ds             0x17     23
es             0x17     23
fs             0x17     23
gs             0x17     23
st0            -nan(0x3b3b3b3b3b3b3b3b) (raw 0xffff3b3b3b3b3b3b3b3b)
st1            -nan(0x3b003b003b003b)   (raw 0xffff003b003b003b003b)
st2            -nan(0x3a3a3a3a3a3a3a3a) (raw 0xffff3a3a3a3a3a3a3a3a)
st3            -nan(0x3a003a003a003a)   (raw 0xffff003a003a003a003a)
st4            -nan(0x3838383838383838) (raw 0xffff3838383838383838)
st5            -nan(0x38003800380038)   (raw 0xffff0038003800380038)
st6            -nan(0x3838383838383838) (raw 0xffff3838383838383838)
st7            -nan(0x38003800380038)   (raw 0xffff0038003800380038)
fctrl          0x127f   4735
fstat          0x20     32
ftag           0xaaaa   43690
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0 
fooff          0x0      0 
fop            0x0      0
xmm0           {f = {0x0, 0xc, 0x0, 0x0}}       {f = {0, 12.1138916, 0, 0}}
xmm1           {f = {0x0, 0xc, 0x0, 0x0}}       {f = {0, 12.0681152, 0, 0}}
xmm2           {f = {0x40000000, 0x1, 0x0, 0x0}}        {f = {1.40365254e+16, 1.74816322, 0, 0}}
xmm3           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {1.95156399e-20, 1.63999999, 0, 0}}
---Type <return> to continue, or q <return> to quit---
xmm4           {f = {0x0, 0xffffffff, 0x0, 0x0}}        {f = {1.38496724e-20, -1.35766685, 0, 0}}
xmm5           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {-3.8517049e-18, 0.694354832, 0, 0}}
xmm6           {f = {0x0, 0x0, 0x0, 0x0}}       {f = {1.78844133e-32, -0.160348564, 0, 0}}
xmm7           {f = {0x8b900000, 0xfffffffe, 0x0, 0x0}} {f = {9.98814043e+12, -2.00507355, 0, 0}}
xmm8           {f = {0x0, 0xffffffff, 0x0, 0x0}}        {f = {-4.14729584e-07, -1.28627229, 0, 0}}
xmm9           {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm10          {f = {0x0, 0x1, 0x0, 0x0}}       {f = {0, 1.875, 0, 0}}
xmm11          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}  
xmm12          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}  
xmm13          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}  
xmm14          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}  
xmm15          {f = {0x0, 0x0, 0x0, 0x0}}       {f = {0, 0, 0, 0}}  
mxcsr          0x1fa0   8096
(gdb)





More information about the ffmpeg-devel mailing list