You are not logged in.
Hello. Too many applications crashes with an "Illegal instruction" message after recent update. My CPU does not support SSE2.
librsvg 2:2.42.0-1.0 breaks termite, geeqie, seamonkey, aisleriot, gimp,
babl 0.1.38-1.0 breaks gimp,
qt5-base 5.10.0-2.1 breaks qt5 apps (qbittorrent, keepassxc, wireshark).
I downgraded to librsvg 2:2.40.19-1, babl 0.1.30-1 and it works fine.
termite:
@(gdb) run
Starting program: /usr/bin/termite
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Program received signal SIGILL, Illegal instruction.
0xb52e30d6 in ?? () from /usr/lib/librsvg-2.so.2
@(gdb) bt
#0 0xb52e30d6 in () at /usr/lib/librsvg-2.so.2
#1 0xb52e20fe in () at /usr/lib/librsvg-2.so.2
#2 0xb52e1462 in () at /usr/lib/librsvg-2.so.2
#3 0xb52b8909 in () at /usr/lib/librsvg-2.so.2
#4 0xb52db874 in () at /usr/lib/librsvg-2.so.2
#5 0xb528e1b6 in () at /usr/lib/librsvg-2.so.2
#6 0xb5290152 in () at /usr/lib/librsvg-2.so.2
#7 0xb50f60e0 in xmlParseStartTag () at /usr/lib/libxml2.so.2
#8 0xb50fd559 in () at /usr/lib/libxml2.so.2
#9 0xb50fe0bb in xmlParseChunk () at /usr/lib/libxml2.so.2
#10 0xb528f0c0 in () at /usr/lib/librsvg-2.so.2
#11 0xb53bf89c in () at /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
#12 0xb6e0afd4 in () at /usr/lib/libgdk_pixbuf-2.0.so.0
#13 0xb6e0b235 in gdk_pixbuf_loader_close () at /usr/lib/libgdk_pixbuf-2.0.so.0
#14 0xb6e0baab in () at /usr/lib/libgdk_pixbuf-2.0.so.0
#15 0xb6e0bbb0 in gdk_pixbuf_new_from_stream_at_scale () at /usr/lib/libgdk_pixbuf-2.0.so.0
#16 0xb7917ddc in () at /usr/lib/libgtk-3.so.0
#17 0xb791b2a7 in gtk_icon_info_load_icon () at /usr/lib/libgtk-3.so.0
#18 0xb791b4cb in gtk_icon_theme_load_icon_for_scale () at /usr/lib/libgtk-3.so.0
#19 0xb791b636 in gtk_icon_theme_load_icon () at /usr/lib/libgtk-3.so.0
#20 0xb7aced55 in () at /usr/lib/libgtk-3.so.0
#21 0xb7ad04f6 in () at /usr/lib/libgtk-3.so.0
#22 0xb7ad87b6 in () at /usr/lib/libgtk-3.so.0
#23 0xb741690e in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#24 0xb742b24f in () at /usr/lib/libgobject-2.0.so.0
#25 0xb7434197 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#26 0xb7434974 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#27 0xb7ac75c6 in gtk_widget_realize () at /usr/lib/libgtk-3.so.0
#28 0xb7ad6782 in () at /usr/lib/libgtk-3.so.0
#29 0xb741690e in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#30 0xb742b24f in () at /usr/lib/libgobject-2.0.so.0
#31 0xb7434197 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#32 0xb7434974 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#33 0xb7ac14b0 in gtk_widget_show () at /usr/lib/libgtk-3.so.0
#34 0x00404370 in ()
#35 0xb6e6c6d3 in __libc_start_main () at /usr/lib/libc.so.6
#36 0x004049ad in ()
gimp:
@(gdb) run
Starting program: /usr/bin/gimp
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Program received signal SIGILL, Illegal instruction.
0xb71f340f in ?? () from /usr/lib/libbabl-0.1.so.0
@(gdb) bt
#0 0xb71f340f in () at /usr/lib/libbabl-0.1.so.0
#1 0xb71db080 in babl_init () at /usr/lib/libbabl-0.1.so.0
#2 0xb7466610 in () at /usr/lib/libgegl-0.2.so.0
#3 0xb709a961 in g_option_context_parse () at /usr/lib/libglib-2.0.so.0
#4 0xb709b908 in g_option_context_parse_strv () at /usr/lib/libglib-2.0.so.0
#5 0x080b1507 in main ()
qbittorrent:
@(gdb) run
Starting program: /usr/bin/qbittorrent
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Program received signal SIGILL, Illegal instruction.
0xb66a422d in qInf() () from /usr/lib/libQt5Core.so.5
@(gdb) bt
#0 0xb66a422d in qInf() () from /usr/lib/libQt5Core.so.5
#1 0xb6e979a7 in ?? () from /usr/lib/libQt5Gui.so.5
#2 0xb7fe890b in call_init.part () from /lib/ld-linux.so.2
#3 0xb7fe8a17 in _dl_init () from /lib/ld-linux.so.2
#4 0xb7fd9c2f in _dl_start_user () from /lib/ld-linux.so.2
system:
% uname -a
Linux alizee 4.14.13-1.0-ARCH #1 SMP PREEMPT Thu Jan 11 12:18:12 CET 2018 i686 GNU/Linux
% cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 7
model name : AMD Duron(tm) processor
stepping : 0
cpu MHz : 1074.541
cache size : 64 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 sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow cpuid 3dnowprefetch vmmcall
bugs : fxsave_leak sysret_ss_attrs
bogomips : 2149.62
clflush size : 32
cache_alignment : 32
address sizes : 34 bits physical, 32 bits virtual
power management: ts
Offline
I fixed qt5-base (-no-sse2).
In testing KDE starts again.
I cannot reproduce the gimp, termite issues in testing, so I hope librsvg was a temporary issue.
Offline
Thank you.
It seems that other Qt5.10 libs also contain SSE2 instructions:
% objdump -d /usr/lib/libQt5X11Extras.so | grep xmm
1465: f2 0f 10 44 24 18 movsd 0x18(%esp),%xmm0
146e: 66 0f 2e 83 98 d7 ff ucomisd -0x2868(%ebx),%xmm0
1478: f2 0f 58 83 a0 d7 ff addsd -0x2860(%ebx),%xmm0
1484: f2 0f 2c d0 cvttsd2si %xmm0,%edx
% objdump -d /usr/lib/libQt5Svg.so | grep xmm
11d32: f2 0f 10 44 24 20 movsd 0x20(%esp),%xmm0
11d38: f2 0f 59 07 mulsd (%edi),%xmm0
11d3f: f2 0f 11 44 24 04 movsd %xmm0,0x4(%esp)
11ea2: f2 0f 10 4c 24 08 movsd 0x8(%esp),%xmm1
11ea8: 66 0f 2e 8b 9c 67 fe ucomisd -0x19864(%ebx),%xmm1
% objdump -d /usr/lib/libQt5SerialPort.so | grep xmm
6744: f3 0f 7e 44 24 20 movq 0x20(%esp),%xmm0
674d: 66 0f d6 86 90 00 00 movq %xmm0,0x90(%esi)
9052: 66 0f ef c0 pxor %xmm0,%xmm0
9062: 66 0f ef c9 pxor %xmm1,%xmm1
907e: f3 0f 2a c1 cvtsi2ss %ecx,%xmm0
Offline
Just tested qt5-base-5.10.0-3.1, now problem in qt5-svg:
Thread 1 "qbittorrent" received signal SIGILL, Illegal instruction.
0xac80bc55 in QSvgNode::QSvgNode(QSvgNode*) () from /usr/lib/libQt5Svg.so.5
@(gdb) bt
#0 0xac80bc55 in QSvgNode::QSvgNode(QSvgNode*) () from /usr/lib/libQt5Svg.so.5
#1 0xac80d2cf in QSvgStructureNode::QSvgStructureNode(QSvgNode*) () from /usr/lib/libQt5Svg.so.5
#2 0xac813143 in QSvgTinyDocument::QSvgTinyDocument() () from /usr/lib/libQt5Svg.so.5
#3 0xac7f8ba5 in ?? () from /usr/lib/libQt5Svg.so.5
#4 0xac803dd6 in QSvgHandler::startElement(QString const&, QXmlStreamAttributes const&) ()
from /usr/lib/libQt5Svg.so.5
#5 0xac807032 in QSvgHandler::parse() () from /usr/lib/libQt5Svg.so.5
#6 0xac80726d in QSvgHandler::init() () from /usr/lib/libQt5Svg.so.5
#7 0xac8153cb in QSvgTinyDocument::load(QString const&) () from /usr/lib/libQt5Svg.so.5
#8 0xac8161f6 in QSvgRenderer::load(QString const&) () from /usr/lib/libQt5Svg.so.5
#9 0xac8ec257 in ?? () from /usr/lib/qt/plugins/iconengines/libqsvgicon.so
#10 0xac8ea145 in ?? () from /usr/lib/qt/plugins/iconengines/libqsvgicon.so
#11 0xb6fc88dd in ?? () from /usr/lib/libQt5Gui.so.5
#12 0xb6fcde00 in QIcon::addFile(QString const&, QSize const&, QIcon::Mode, QIcon::State) ()
from /usr/lib/libQt5Gui.so.5
#13 0xb6fcdfa9 in QIcon::QIcon(QString const&) () from /usr/lib/libQt5Gui.so.5
#14 0xb6fd06d5 in ?? () from /usr/lib/libQt5Gui.so.5
#15 0xb6fd8f48 in ?? () from /usr/lib/libQt5Gui.so.5
#16 0xb6fcd0c4 in QIcon::pixmap(QWindow*, QSize const&, QIcon::Mode, QIcon::State) const ()
from /usr/lib/libQt5Gui.so.5
#17 0xb6fcd1f5 in QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const () from /usr/lib/libQt5Gui.so.5
#18 0xb75e9290 in QCommonStyle::standardPixmap(QStyle::StandardPixmap, QStyleOption const*, QWidget const*) const
() from /usr/lib/libQt5Widgets.so.5
#19 0xb76444ee in QFusionStyle::standardPixmap(QStyle::StandardPixmap, QStyleOption const*, QWidget const*) const
() from /usr/lib/libQt5Widgets.so.5
#20 0xb75f3926 in QProxyStyle::standardPixmap(QStyle::StandardPixmap, QStyleOption const*, QWidget const*) const ()
from /usr/lib/libQt5Widgets.so.5
#21 0xb75edc79 in QCommonStyle::standardIcon(QStyle::StandardPixmap, QStyleOption const*, QWidget const*) const ()
from /usr/lib/libQt5Widgets.so.5
#22 0xb7630786 in QFusionStyle::standardIcon(QStyle::StandardPixmap, QStyleOption const*, QWidget const*) const ()
from /usr/lib/libQt5Widgets.so.5
#23 0xb75f3c99 in QProxyStyle::standardIcon(QStyle::StandardPixmap, QStyleOption const*, QWidget const*) const ()
from /usr/lib/libQt5Widgets.so.5
#24 0xb76b36ca in ?? () from /usr/lib/libQt5Widgets.so.5
#25 0xb76b9c4b in QLineEdit::setClearButtonEnabled(bool) () from /usr/lib/libQt5Widgets.so.5
#26 0x005e7d55 in LineEdit::LineEdit(QWidget*) ()
#27 0x0061cf6d in MainWindow::MainWindow(QWidget*) ()
#28 0x004c4053 in Application::exec(QStringList const&) ()
#29 0x004b3655 in main ()
Offline
Ah. Thanks. Totally forgot about those. So we should actually check all qt5-xxx packages for missing -no-sse2 flags.
Offline
I don't see I can do a reconfigure on those packages. So I fear, they took some SSE2 information from qt5-base and must all be scheduled for a rebuild.
Offline
I rescheduled qt5-3d qt5-base qt5-canvas3d qt5-charts qt5-connectivity qt5-datavis3d qt5-declarative qt5-doc qt5-examples qt5-feedback qt5-gamepad qt5-graphicaleffects qt5-imageformats qt5-location qt5-multimedia qt5-networkauth qt5-quickcontrols qt5-quickcontrols2 qt5-remoteobjects qt5-script qt5-scxml qt5-sensors qt5-serialbus qt5-serialport qt5-speech qt5-styleplugins qt5-svg qt5-systems qt5-tools qt5-translations qt5-virtual
Let's see if that helps
Offline
thanks again. :-)
Offline
I have installed qt5-base-5.10.0-3.2, qt5-svg-5.10.0-1.2 and qt5-x11extras-5.10.0-1.1 from testing and now qbittorrent and keepassxc works fine.
Thank you. :)
Offline
nice, glad this thing is solved. thanks for testing. :-)
Offline
I'm still fighting with a KDE back screen problem, but I'm not sure if it is related to SSE2.
Offline
ah. but it does. so SSE2 stuff krept into kde libraries or some other Qt libraries.
I think, we should add an opcode inspector now to the build system..
Offline
I'll be happy to include an opcode check on built packages, but I have absolutely no clue on how to achieve this. I guess, this is rather something, that you, Andreas, should write.
Offline
I agree. :-)
I'll think about a first simple script.
Offline
Hi,
same here, after upgrade I cannot start Lightdm nor GDM as they dump cores on librsvg.
I have an old AMD Athlon XP 1900+, which probably lacks SSE2 too.
Downgrading to librsvg-2:2.40.19-1 solves the issue, but how about a more permanent solution?
Offline
I tried to build the library with 'target-cpu=pentium3' in the rustc flags.
I just installed lightdm and lxde on an old machine without SSE2 with librsvg 2:2.42.3-1.2
and it works on a machine with mmx, sse and no sse2.
Just to make sure, is librsvg 2:2.42.3-1.2 crashing your system?
Because I fear that we have to go for '--target-cpu=i486' to avoid all optimizations
(and the topic of split repos for i486, Pentium to Pentium 3 and post-Pentium 3 comes
up again).
Offline
I suspect that the lightdrm greeter is crashing. Which one are you using? See https://wiki.archlinux.org/index.php/LightDM.
As GDM is also crashing, I would bet it's the GTK one..
Offline
Hi Andreas,
Just to make sure, is librsvg 2:2.42.3-1.2 crashing your system?
Yes that's the one, the latest version available.
I'm using lightdm-gtk-greeter which seems to be the best option as I'm using Xfce as DE.
Offline
Just testing on an alix 1.e with a geode AMD processor.. :-)
Offline
Ok, it's showing a cursor, then crashing, and in a loop. :-)
So, currently minimum requirement for Archlinux32 is a Pentium3 with at least MMX and SSE.
The only other option is to start to build some central packages like librsvg against i486 or so..
Offline
I wonder, what the AMD Athlon XP 1900+ is missing to run librsvg:
flags : fpu vme de tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow
It has mmx and sse. And sse2 is not being used (anymore) by librsvg in Archlinux32.
*puzzle*
Can you post your /proc/cpuinfo?
Offline
Can you post your /proc/cpuinfo?
Sure.
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 8
model name : AMD Athlon(TM) XP 1900+
stepping : 1
cpu MHz : 1600.186
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 mp mmxext 3dnowext 3dnow cpuid 3dnowprefetch vmmcall
bugs : fxsave_leak sysret_ss_attrs spectre_v1 spectre_v2
bogomips : 3200.37
clflush size : 32
cache_alignment : 32
address sizes : 34 bits physical, 32 bits virtual
power management: ts
Offline
BTW, I did not add this precision but the cursor + crash in a loop is what I get too. With GDM on the other hand it does not even get to the cursor (but also crashes on librsvg as logged in journald).
Offline
I just had a hanging sddm login.
Sadly, hand-crafted CPU optimization comes in more and more, C/C++ doens't have a decent
compile and rutime support to check for CPU features and everybody is hacking their own
stuff.
There is always text-based login and 'startx'. :-)
Or you could try 'slim' (a better option anyway for old machines IMHO than bloatware using
GTK, Qt just for a simple login screen).
Offline
Using lightdm-mini-greeter seems to do the trick. Not really a good solution but it works.
Offline