[MPlayer-dev-eng] runtime cpudetect bug in fastmemcpy! Fwd: [MPlayer-users] New CPU-detection code in current CVS, crash on Athlon
Arpi
arpi at thot.banki.hu
Tue Mar 19 23:09:08 CET 2002
he got sigill on amd k7, caused by sse instruction in fastmemcpy code!
Nick / Michael, please check this...
--------- Forwarded message ---------
From: Michael Mauch <michael.mauch at gmx.de>
To: mplayer-users at mplayer.dev.hu
Subject: [MPlayer-users] New CPU-detection code in current CVS, crash on Athlon
...
Linux elmicha 2.4.18 #1 Die Mär 12 22:36:29 CET 2002 i686 unknown
% cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 2
model name : AMD Athlon(tm) Processor
stepping : 1
cpu MHz : 706.969
cache size : 512 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 p
se36 mmx fxsr syscall mmxext 3dnowext 3dnow
bogomips : 1409.02
% gdb mplayer
GNU gdb 5.1
MPlayer CVS-020319-20:11-2.95.3 (C) 2000-2002 Arpad Gereoffy (siehe DOCS!)
CPU vendor name: AuthenticAMD max cpuid level: 1
CPU: Advanced Micro Devices Athlon K75 Pluto,Orion (Type: 6, Stepping: 1)
extended cpuid-level: 6
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
Compiled with RUNTIME CPU Detection - warning, it's not optimal! To get best
performance, recompile mplayer from sources with --disable-runtime-cpudetec
tion
mp3lib: made decode tables with MMX optimization
init layer2&3 finished, tables done
mp3lib: using 3DNow!Ex optimized decore!
Program received signal SIGILL, Illegal instruction.
[Switching to Thread 1024 (runnable)]
0x08087d4d in fast_memcpy (to=0x826d1e0, from=0x826cae0, len=512) at aclib_t
emplate.c:207
207 __asm__ __volatile__ (
(gdb) bt
#0 0x08087d4d in fast_memcpy (to=0x826d1e0, from=0x826cae0, len=512)
at aclib_template.c:207
#1 0x080b0f8e in MP3_DecodeFrame (hova=0x83133f0 "", single=-1) at sr1.c:16
7
#2 0x0806e6cc in init_audio (sh_audio=0x82b9ce0) at dec_audio.c:772
#3 0x08068008 in main (argc=10, argv=0xbfffef54, envp=0xbfffef80) at mplaye
r.c:1159
#4 0x405e48c1 in __libc_start_main (main=0x80665fc <main>, argc=10, argv=0x
bfffef54,
init=0x8063bc0 <_init>, fini=0x81bf4f4 <_fini>, rtld_fini=0x4000a914 <_d
l_fini>,
stack_end=0xbfffef4c) at ../sysdeps/generic/libc-start.c:92
(gdb) disass $eip-32 $eip+32
Dump of assembler code from 0x8087d2d to 0x8087d6d:
0x8087d2d <fast_memcpy+141>: dec %edi
0x8087d2e <fast_memcpy+142>: adc %cl,(%edi)
0x8087d30 <fast_memcpy+144>: sub 0x20(%edi),%edx
0x8087d33 <fast_memcpy+147>: movntps %xmm3,0x30(%edi)
0x8087d37 <fast_memcpy+151>: add $0x40,%esi
0x8087d3a <fast_memcpy+154>: add $0x40,%edi
0x8087d3d <fast_memcpy+157>: dec %ecx
0x8087d3e <fast_memcpy+158>: jne 0x8087d12 <fast_memcpy+114>
0x8087d40 <fast_memcpy+160>: jmp 0x8087d74 <fast_memcpy+212>
0x8087d42 <fast_memcpy+162>: test %ecx,%ecx
0x8087d44 <fast_memcpy+164>: je 0x8087d74 <fast_memcpy+212>
0x8087d46 <fast_memcpy+166>: prefetchnta 0x140(%esi)
0x8087d4d <fast_memcpy+173>: movaps (%esi),%xmm0 <=== sigill here!
0x8087d50 <fast_memcpy+176>: movaps 0x10(%esi),%xmm1
0x8087d54 <fast_memcpy+180>: movaps 0x20(%esi),%xmm2
0x8087d58 <fast_memcpy+184>: movaps 0x30(%esi),%xmm3
0x8087d5c <fast_memcpy+188>: movntps %xmm0,(%edi)
0x8087d5f <fast_memcpy+191>: movntps %xmm1,0x10(%edi)
0x8087d63 <fast_memcpy+195>: movntps %xmm2,0x20(%edi)
0x8087d67 <fast_memcpy+199>: movntps %xmm3,0x30(%edi)
0x8087d6b <fast_memcpy+203>: add $0x40,%esi
End of assembler dump.
(gdb) q
The program is running. Exit anyway? (y or n) y
"--disable-runtime-cpudetection" doesn't help, neither does replacing the
old ~/.mplayer/codecs.conf.
"gcc -c -O4 -march=i486 -mcpu=i686 -pipe -ffast-math -fomit-frame-pointer"
are the right flags for my Athlon?
Hope I didn't forget something.
Regards...
Michael
_______________________________________________
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-dev-eng
mailing list