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

Mike Hommey mh at glandium.org
Tue Nov 11 23:19:00 UTC 2014


On Wed, Nov 12, 2014 at 12:11:16AM +0100, Ondrej Zary wrote:
> 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)?

Gah, indeed, I mixed up the registers.

Mike



More information about the pkg-mozilla-maintainers mailing list