[Bug 1162283] New: rust emits SSE2 for i586 (SIGILL)
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
Bug ID: 1162283
Summary: rust emits SSE2 for i586 (SIGILL)
Classification: openSUSE
Product: openSUSE Tumbleweed
Version: Current
Hardware: i586
OS: Linux
Status: NEW
Severity: Normal
Priority: P5 - None
Component: Development
Assignee: luke@ljones.dev
Reporter: jengelh@inai.de
QA Contact: qa-bugs@suse.de
CC: aplanas@suse.com, dimstar@opensuse.org
Found By: ---
Blocker: ---
AFAICS, not the same as bug #1077870 but similar in spirit.
A large part of an X desktop is unusable due to a crash caused by rust emitting
SSE2 for the i586 target, causing a SIGILL crash in librsvg... so basically
whenever something wants to display an SVG icon, which happens all the time I
would argue.
# gdb /usr/bin/xfce4-settings-manager
Reading symbols from /usr/bin/xfce4-settings-manager...
Reading symbols from
/usr/lib/debug/usr/bin/xfce4-settings-manager-4.14.2-1.1.i386.debug...
(gdb) r
Starting program: /usr/bin/xfce4-settings-manager
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.30-2.2.i686
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0xb6020b40 (LWP 6458)]
[New Thread 0xb56ffb40 (LWP 6459)]
[New Thread 0xb4868b40 (LWP 6460)]
Thread 1 "xfce4-settings-" received signal SIGILL, Illegal instruction.
0xb3ea2a53 in <&str as std::ffi::c_str::CString::new::SpecIntoVec>::into_vec ()
from /usr/lib/librsvg-2.so.2
(gdb) bt
#0 0xb3ea2a53 in <&str as
std::ffi::c_str::CString::new::SpecIntoVec>::into_vec () from
/usr/lib/librsvg-2.so.2
#1 0xb3dce649 in std::ffi::c_str::CString::new (t=...)
at /home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libstd/ffi/c_str.rs:354
#2 glib::subclass::types::register_type () at
/usr/src/debug/librsvg-2.46.4-0.i386/vendor/glib/src/subclass/types.rs:474
#3 0xb3ea9947 in std::sync::once::Once::call_inner () from
/usr/lib/librsvg-2.so.2
#4 0xb3cff82b in rsvg_rust_handle_get_type () at
/home/abuild/rpmbuild/BUILD/rustc-1.40.0-src/src/libstd/sync/once.rs:224
#5 0xb3cfceb4 in rsvg_handle_get_type () at librsvg/rsvg-handle.c:422
#6 0xb3cfdd25 in rsvg_handle_new () at librsvg/rsvg-handle.c:467
(gdb) disas
Dump of assembler code for function
_ZN70_$LT$$RF$str$u20$as$u20$std..ffi..c_str..CString..new..SpecIntoVec$GT$8into_vec17h099ffe789070d331E:
0xb3ea29b0 <+0>: push %ebp
0xb3ea29b1 <+1>: push %ebx
0xb3ea29b2 <+2>: push %edi
0xb3ea29b3 <+3>: push %esi
0xb3ea29b4 <+4>: sub $0x2c,%esp
0xb3ea29b7 <+7>: mov 0x40(%esp),%edi
0xb3ea29bb <+11>: call 0xb3ea29c0
<_ZN70_$LT$$RF$str$u20$as$u20$std..ffi..c_str..CString..new..SpecIntoVec$GT$8into_vec17h099ffe789070d331E+16>
0xb3ea29c0 <+16>: pop %ebx
0xb3ea29c1 <+17>: add $0x1c0640,%ebx
0xb3ea29c7 <+23>: mov %edi,%ebp
0xb3ea29c9 <+25>: inc %ebp
0xb3ea29ca <+26>: js 0xb3ea2a6c
<_ZN70_$LT$$RF$str$u20$as$u20$std..ffi..c_str..CString..new..SpecIntoVec$GT$8into_vec17h099ffe789070d331E+188>
0xb3ea29d0 <+32>: mov %ecx,%esi
0xb3ea29d2 <+34>: test %ebp,%ebp
0xb3ea29d4 <+36>: mov %edx,0x1c(%esp)
0xb3ea29d8 <+40>: je 0xb3ea29f4
<_ZN70_$LT$$RF$str$u20$as$u20$std..ffi..c_str..CString..new..SpecIntoVec$GT$8into_vec17h099ffe789070d331E+68>
0xb3ea29da <+42>: mov %ebp,(%esp)
0xb3ea29dd <+45>: call 0xb3cfbd60
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
Thomas Zimmermann
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c1
--- Comment #1 from Luke Jones
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c2
--- Comment #2 from Jan Engelhardt
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c3
--- Comment #3 from Thomas Zimmermann
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c4
--- Comment #4 from Jan Engelhardt
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c5
--- Comment #5 from Thomas Zimmermann
So RPM does not have a "i786" architecture, and though one can be added with a little config, that is not helpful (i786 is not a thing, and neither is i586 actually, and it is unfortunate i586 has found its way into rpm—updated the wiki pages). But there is "pentium4", albeit it's just an alias for the base 386 plus -march=. It does not enable SSE in its own right, so there is some config to be done in either case.
Not only that, you would also have to teach zypper and OBS about the special case that pentium4 is (similar to how i686 is used) and that zypper shall not install a pentium4 rpm on a non-SSE2 machine (because rpm does not care what you install).
I'm just looking for a simple way to see if a package uses SSE2. If so, I can try to find an alternative program or avoid installing the package in the first place. I don't care if zypper installs these packages automatically. I'm not proposing to change any dependencies. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
Kevin Brace
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c6
--- Comment #6 from Kevin Brace
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
Luke Jones
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
Thomas Zimmermann
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c9
--- Comment #9 from Stefan Dirsch
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283#c10
--- Comment #10 from Jan Engelhardt
http://bugzilla.opensuse.org/show_bug.cgi?id=1162283
Felix Miata
participants (2)
-
bugzilla_noreply@novell.com
-
bugzilla_noreply@suse.com