Package: firefox-esr
Version: 68.8.0esr-1~deb10u1
Severity: important
Firefox ESR (i386) crashes on pre-SSE2 CPUs when visiting certain
websites such as xfce-look.org.
As far as I understand Debian stretch/buster firefox-esr package should
support processors without SSE2.
Older versions of the firefox-esr package had similar issues and were
(apparently) fixed.
If this issue/bug is unfixable (I hope not!) package should depend on
package sse2-support (i386 only).
Upstream doesn't support pre-SSE2 processors anymore, some parts of the
source code assume SSE2 unconditionally.
Versions tested:
- 68.8.0esr-1~deb10u1 (buster): crashes: SIGSEGV due to SSE2 instruction
MOVQ
- 68.8.0esr-1~deb9u1 (stretch): crashes: SIGSEGV due to SSE instruction
LDMXCSR (weird, SSE is supported by CPU)
- 60.9.0esr-1~deb9u1 (stretch): crashes: SIGILL (Illegal instruction)
due to SSE2 instruction MOVQ
- 60.6.3esr-1~deb9u1 (stretch): crashes: SIGILL (Illegal instruction)
due to SSE2 instruction MOVQ
- 60.2.0esr-1~deb9u2.2 (stretch, from #908449): SIGILL (Illegal
instruction) due to SSE2 instruction MOVQ
References:
- #908449 (no subject):
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908449
- #877445 Certain sites crash Firefox on pre-SSE2 CPUs:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=877445
- #908396 firefox-esr: stopped working after upgrade from 59 to 60:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908396
Info:
$ firefox -v
Mozilla Firefox 68.8.0esr
$ firefox
[Parent 4798, Gecko_IOThread] WARNING: pipe error (84): Connection reset
by peer: file
/build/firefox-esr-lGgo0c/firefox-esr-68.8.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc,
line 358
[Parent 4798, Gecko_IOThread] WARNING: pipe error (82): Connection reset
by peer: file
/build/firefox-esr-lGgo0c/firefox-esr-68.8.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc,
line 358
###!!! [Parent][MessageChannel] Error:
(msgtype=0x1E008F,name=PBrowser::Msg_Destroy) Channel error: cannot
send/recv
###!!! [Parent][MessageChannel] Error:
(msgtype=0x1E0074,name=PBrowser::Msg_StopIMEStateManagement) Channel
error: cannot send/recv
###!!! [Parent][MessageChannel] Error:
(msgtype=0x1E008F,name=PBrowser::Msg_Destroy) Channel error: cannot
send/recv
$ dmesg | tail -n2
[ 361.271646] Web Content[4868]: segfault at b5aae898 ip b0666938 sp
bfc45dec error 7 in libxul.so[aebb4000+439f000]
[ 361.271669] Code: 10 89 74 24 14 83 c3 18 89 5c 24 10 5b 5e 5f e9 0e
3c 02 00 66 90 66 90 66 90 66 90 66 90 66 90 66 90 8b 44 24 04 8b 54 24
0c <f3> 0f 7e 02 66 0f d6 00 8b 54 24 08 8b 12 89 50 08 c7 40 0c 00 00
$ export MOZ_FORCE_DISABLE_E10S=1
$ gdb /usr/lib/firefox-esr/firefox-esr
GNU gdb (Debian 8.2.1-2+b3) 8.2.1
<snip>
(gdb) run
Starting program: /usr/lib/firefox-esr/firefox-esr
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
<snip>
[Thread 0x9cf6ab40 (LWP 7037) exited]
Thread 1 "firefox-esr" received signal SIGSEGV, Segmentation fault.
0xb072d938 in ?? () from /usr/lib/firefox-esr/libxul.so
(gdb) bt full
<snip: useless, no debugging symbols available>
(gdb) x/i $eip
=> 0xb072d938: movq (%edx),%xmm0
(gdb) set disassembly-flavor intel
(gdb) x/i 0xb072d938
=> 0xb072d938: movq xmm0,QWORD PTR [edx]
$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 10
model name : AMD Athlon(tm) XP 2400+
stepping : 0
cpu MHz : 2067.256
cache size : 256 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_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 pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow cpuid 3dnowprefetch
vmmcall
bugs : fxsave_leak sysret_ss_attrs spectre_v1 spectre_v2
spec_store_bypass
bogomips : 4134.51
clflush size : 32
cache_alignment : 32
address sizes : 34 bits physical, 32 bits virtual
power management: ts