[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