Bug#768360: iceweasel: crashes with Illegal instruction at startup

Ondrej Zary linux at rainbow-software.org
Tue Nov 11 23:11:16 UTC 2014


On Tuesday 11 November 2014 23:43:29 Mike Hommey wrote:
> On Tue, Nov 11, 2014 at 06:54:26PM +0100, Ondrej Zary wrote:
> > On Tuesday 11 November 2014 00:17:59 Mike Hommey wrote:
> > > On Tue, Nov 11, 2014 at 12:06:30AM +0100, Ondrej Zary wrote:
> > > > (gdb) print JSC::MacroAssemblerX86Common::s_sseCheckState
> > > > $1 = JSC::MacroAssemblerX86Common::HasSSE3
> > >
> > > Aha! At least now it's clear what part is doing wrong.
> > >
> > > Can you compile and run the following code, and give its output?
> > >
> > > #include <stdio.h>
> > >
> > > int main() {
> > >   int flags_edx = 0;
> > >   int flags_ecx = 0;
> > >   asm (
> > >        "movl $0x1, %%eax;"
> > >        "pushl %%ebx;"
> > >        "cpuid;"
> > >        "popl %%ebx;"
> > >
> > >        : "=c" (flags_ecx), "=d" (flags_edx)
> > >        :
> > >        : "%eax"
> > >
> > >        );
> > >   printf("%04x %04x\n", flags_ecx, flags_edx);
> > >   return 0;
> > > }
> >
> > $ cc -Wall test.c -o test
> > $ ./test
> > 4db6ebee 80a135
> > $ ./test
> > 24953363 80a135
> > $ ./test
> > 235945c1 80a135
> > $ ./test
> > e6ad9217 80a135
> > $ ./test
> > c74a535e 80a135
> > $ ./test
> > 8671f3 80a135
> >
> > This was the same bug, only in kernel:
> > https://bugzilla.kernel.org/show_bug.cgi?id=3767
>
> What are the values when you clobber ecx first? If edx doesn't change,
> then there is more to do than clobbering ecx in the iceweasel case.

Isn't Iceweasel enabling SSE3 because the SSE3 bit is set in ECX (ignoring 
unset SSE and SSE2 bits in EDX)?


-- 
Ondrej Zary



More information about the pkg-mozilla-maintainers mailing list