[arch-general] Intel CPUs and glibc-2.21.3

Fabien Dubosson fabien.dubosson at gmail.com
Fri Apr 24 14:46:01 UTC 2015


Yesterday after upgrading my system I started having emacs segfaulting
when started in daemon mode. This bug was weird because it didn't
happen after an emacs update.

Looking for help on IRC, Namarrgon helped me to get the trace that
looked like this [1]:

    Thread 1 (Thread 0x7ffff7f96980 (LWP 1768)):
    Already logging to trace.log.
    #0  __lll_unlock_elision (lock=0x7fffefbc1ee8, private=0) at ../sysdeps/unix/sysv/linux/x86/elision-unlock.c:29
    No locals.
    #1  0x00007fffef97512c in ?? () from /usr/lib/libEGL.so.1
    No symbol table info available.
    #2  0x00007fffef9078c2 in ?? () from /usr/lib/libEGL.so.1
    No symbol table info available.
    #3  0x00007fffffffe1e0 in ?? ()
    No symbol table info available.
    #4  0x00007fffef986831 in ?? () from /usr/lib/libEGL.so.1
    No symbol table info available.
    #5  0x00007fffffffe1e0 in ?? ()
    No symbol table info available.
    #6  0x00007ffff7dea815 in _dl_fini () at dl-fini.c:257
            nmaps = <optimized out>
            nloaded = <optimized out>
            i = <optimized out>
            l = 0x7ffff7faca50
            ns = 140737215411296
            maps = 0xffffffff
            maps_size = 140737262191424
            do_audit = <optimized out>
            __PRETTY_FUNCTION__ = "_dl_fini"

    Backtrace stopped: previous frame inner to this frame (corrupt stack?)

The reason of the segfault was located in the glibc, and was due to the
update to glibc-2.21-3. According to the explanation of Namarrgon, the
bug is not a glibc one but a bug in the Intel CPU firmware:

  > TSX is defective on haswall and some broadwell CPUs and intel
  > disabled it via firmware, you weren't applying the firmware and
  > running into the bug
  > lock-elision is part of the broken instruction

The solution is quite simple: Follow instructions on the wiki to install
the Intel Microcode [2]. The general procedure is:

  - Install `intel-ucode'
  - Update bootloader config to include it (e.g. grub: `# grub-mkconfig -o /boot/grub/grub.cfg')
  - Restart && Enjoy

On reddit [3] there was other people having the same issue but with
different software: at least VLC for the the original poster.

I'm sharing this here because the issue is not evident to find. The bug
was not present with previous versions of glibc in my case (I never had
the microcode installed). I hope this could help other people to
identify the problem if they encounter it. Maybe an official
announcement could be useful if there is other people having this issue
with the new glibc? I'll let devs and TUs decide this.

[1] http://hastebin.com/dopoluqodu.vala
[2] https://wiki.archlinux.org/index.php/Microcode
[3] https://www.reddit.com/r/archlinux/comments/33laqv/segmentation_fault_in_vlccachegen_after_updating/

Best regards,
++ Fabien
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.archlinux.org/pipermail/arch-general/attachments/20150424/3f5255ad/attachment.asc>

More information about the arch-general mailing list