[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#353494: Xserver SIGILL on processors without CPUID



Am Montag, den 24.12.2007, 15:58 +0100 schrieb Brice Goglin:
> > this bug is uncorrelated to Cyrix CPUs. It is caused by an bad
> > expression in the MMX detection code. Apparently, gas changed the
> > handling of local labels, so "jnz 1" does not assemble to the same as
> > "jnz 1f", which it once did, IIRC. The documentation for gas does not
> > mention local labels without an "f" or "b" suffix. The attached patch
> > fixes the jump instructions in the inline assembly and thus this bug
> >   
> Any idea why people would have seen the problem on Cyrix and not on 
> other CPUs?

The jump is only taken if CPUID is not present. The 6x68 CPUs are the
last ones where CPUID is not present (not enabled by some Cyrix-special
CPU configuration bit, in fact). Any Pentium has CPUID, the later Intel
486 (DX2 and upwards) has CPUID, any AMD processor since the 5x68 has
cpuid, so the later processors k5 and k6 do have cpuid.

> >  The patch has not yet been
> > tested on the real hardware (first I have to recompile the xorg-server
> > package which I might not get around to before christmas), but the
> > obviously wrong x86 code in gdb's disassembly is gone.
> This code has moved to the pixman library since Xserver 1.4. And it 
> looks like the "f" suffix is there now. So if you are right, the bug 
> should be fixed in unstable already.
Any chance of getting the fix in the next point release? Probably not,
as it is not security related.

Regards,
  Michael Karcher




Reply to: