[Ffmpeg-devel] [BUG] Crash in has_altivec()
Luca Abeni
lucabe72
Sat Mar 25 12:42:29 CET 2006
Hi all,
I noticed that current CVS crashes on my iBook when trying to understand
if the processor has altivec (I do not think it has).
This happens on Debian 3.1, with gcc 3.3.5.
How to reproduce:
output_example test.y4m
ffmpeg -i test.y4m test.mpg
More info:
luca at utopia:~$ gcc -v
Reading specs from /usr/lib/gcc-lib/powerpc-linux/3.3.5/specs
Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --enable-__cxa_atexit --with-system-zlib --enable-nls --without-included-gettext --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc --disable-multilib powerpc-linux
Thread model: posix
gcc version 3.3.5 (Debian 1:3.3.5-13)
luca at utopia:~$ cat /proc/cpuinfo
cpu : 750CX
temperature : 11-13 C (uncalibrated)
clock : 499MHz
revision : 34.21 (pvr 0008 2215)
bogomips : 996.14
machine : PowerBook4,1
motherboard : PowerBook4,1 MacRISC2 MacRISC Power Macintosh
L2 cache : 256K unified
memory : 128MB
pmac-generation : NewWorld
gdb ./ffmpeg_g
GNU gdb 6.3-debian
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 "powerpc-linux"...Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run -i test.y4m test.mpg
Starting program: /tmp/ffmpeg/ffmpeg_g -i test.y4m test.mpg
FFmpeg version CVS, Copyright (c) 2000-2004 Fabrice Bellard
configuration:
libavutil version: 49.0.0
libavcodec version: 51.8.0
libavformat version: 50.4.0
built on Mar 25 2006 12:24:48, gcc: 3.3.5 (Debian 1:3.3.5-13)
Input #0, yuv4mpegpipe, from 'test.y4m':
Duration: N/A, bitrate: N/A
Stream #0.0, 25.00 fps(r): Video: rawvideo, yuv420p, 352x288
File 'test.mpg' already exists. Overwrite ? [y/N] y
Output #0, mpeg, to 'test.mpg':
Stream #0.0, 25.00 fps(c): Video: mpeg1video, yuv420p, 352x288, q=2-31, 200 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Program received signal SIGILL, Illegal instruction.
0x10261fcc in has_altivec () at ppc/dsputil_altivec.c:1624
1624 {
(gdb) bt
#0 0x10261fcc in has_altivec () at ppc/dsputil_altivec.c:1624
#1 0x10264d4c in dsputil_h264_init_ppc (c=0x1037c920, avctx=0x10260fec) at ppc/dsputil_h264_altivec.c:233
#2 0x10260fec in dsputil_init_ppc (c=0x1037c920, avctx=0x10373ac0) at ppc/dsputil_ppc.c:259
#3 0x100a62c8 in dsputil_init (c=0x1037c920, avctx=0x10373ac0) at dsputil.c:4077
#4 0x10079934 in MPV_common_init (s=0x1037c0d0) at mpegvideo.c:656
#5 0x1007ad3c in MPV_encode_init (avctx=0x10373ac0) at mpegvideo.c:1286
#6 0x10178eb0 in encode_init (avctx=0x10373ac0) at mpeg12.c:224
#7 0x10076ac0 in avcodec_open (avctx=0x10373ac0, codec=0x102fe538) at utils.c:869
#8 0x1000f798 in av_encode (output_files=0x10304fe8, nb_output_files=1, input_files=0x10304ef8, nb_input_files=1, stream_maps=0x1037bf90,
nb_stream_maps=0) at ffmpeg.c:1864
#9 0x1000df24 in main (argc=4, argv=0x10300000) at ffmpeg.c:4271
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x10261fac to 0x10261fec:
0x10261fac <put_no_rnd_pixels16_xy2_altivec+248>: lwz r0,28(r1)
0x10261fb0 <put_no_rnd_pixels16_xy2_altivec+252>: mtvrsave r0
0x10261fb4 <put_no_rnd_pixels16_xy2_altivec+256>: addi r1,r1,32
0x10261fb8 <put_no_rnd_pixels16_xy2_altivec+260>: blr
0x10261fbc <has_altivec+0>: stwu r1,-448(r1)
0x10261fc0 <has_altivec+4>: li r10,16
0x10261fc4 <has_altivec+8>: li r9,32
0x10261fc8 <has_altivec+12>: li r8,48
0x10261fcc <has_altivec+16>: stvx v20,r1,r10
0x10261fd0 <has_altivec+20>: li r7,64
0x10261fd4 <has_altivec+24>: stvx v21,r1,r9
0x10261fd8 <has_altivec+28>: li r6,80
0x10261fdc <has_altivec+32>: stvx v22,r1,r8
0x10261fe0 <has_altivec+36>: li r4,96
0x10261fe4 <has_altivec+40>: mfvrsave r8
0x10261fe8 <has_altivec+44>: stvx v23,r1,r7
End of assembler dump.
(gdb) info all-registers
r0 0x10222c5c 270675036
r1 0x7ffff030 2147479600
r2 0x30012ed8 805383896
r3 0x1037c920 272091424
r4 0x10260fec 270929900
r5 0x100a62c8 269116104
r6 0x100f0000 269418496
r7 0x10220000 270663680
r8 0x30 48
r9 0x20 32
r10 0x10 16
r11 0x10220000 270663680
r12 0x1022349c 270677148
r13 0x1030c2b0 271631024
r14 0x0 0
r15 0x0 0
r16 0x10304ef8 271601400
r17 0x10304fe8 271601640
r18 0x10372650 272049744
r19 0x1 1
r20 0x1 1
r21 0x0 0
r22 0x1037bf90 272088976
r23 0x1037bec0 272088768
r24 0x10373ac0 272054976
r25 0x1 1
r26 0x1037c0d0 272089296
r27 0x1 1
r28 0x4 4
r29 0x0 0
r30 0x10373ac0 272054976
r31 0x1037c920 272091424
f0 -nan(0x8000082064000) (raw 0xfff8000082064000)
f1 0 (raw 0x0000000000000000)
f2 0 (raw 0x0000000000000000)
f3 0 (raw 0x0000000000000000)
f4 0 (raw 0x0000000000000000)
f5 0 (raw 0x0000000000000000)
f6 0 (raw 0x0000000000000000)
f7 25 (raw 0x4039000000000000)
f8 4503601774854169 (raw 0x4330000080000019)
f9 4503601774854145 (raw 0x4330000080000001)
f10 0.5 (raw 0x3fe0000000000000)
f11 0 (raw 0x0000000000000000)
f12 -0.80000001192092896 (raw 0xbfe99999a0000000)
f13 0 (raw 0x0000000000000000)
f14 0 (raw 0x0000000000000000)
f15 0 (raw 0x0000000000000000)
f16 0 (raw 0x0000000000000000)
f17 0 (raw 0x0000000000000000)
f18 0 (raw 0x0000000000000000)
f19 0 (raw 0x0000000000000000)
f20 0 (raw 0x0000000000000000)
f21 0 (raw 0x0000000000000000)
f22 0 (raw 0x0000000000000000)
f23 0 (raw 0x0000000000000000)
f24 0 (raw 0x0000000000000000)
f25 0 (raw 0x0000000000000000)
f26 0 (raw 0x0000000000000000)
f27 0 (raw 0x0000000000000000)
f28 0 (raw 0x0000000000000000)
f29 0 (raw 0x0000000000000000)
f30 0 (raw 0x0000000000000000)
f31 0 (raw 0x0000000000000000)
pc 0x10261fcc 270933964
ps 0x8d032 577586
cr 0x840444e2 2214872290
lr 0x10264d4c 270945612
ctr 0x1007ad04 268938500
xer 0x20000000 536870912
fpscr 0x82062000 2181439488
vr0 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr1 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr2 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr3 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr4 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr5 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr6 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr7 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr8 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr9 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr10 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr11 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr12 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr13 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr14 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr15 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr16 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr17 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr18 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr19 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr20 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr21 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr22 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr23 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr24 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr25 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr26 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr27 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr28 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr29 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr30 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vr31 {uint128 = 0x00000000000000000000000000000000, v4_float = {0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}}
vscr 0x0 0
vrsave 0x0 0
More info on request.
Luca
More information about the ffmpeg-devel
mailing list