Chapter 33. Compiler and Tools

Multiple bugs when booting from SAN over FCoE

Multiple bugs have arisen from the current implementation of boot from Storage Area Network (SAN) using Fibre Channel over Ethernet (FCoE). Red Hat is targeting a future release of Red Hat Enterprise Linux 7 for the fixes for these bugs. For a list of the affected bugs and workarounds (where available), please contact your Red Hat support representative.

Valgrind cannot run programs built against an earlier version of Open MPI

Red Hat Enterprise Linux 7.2 supports only the Open MPI application binary interface (ABI) in version 1.10, which is incompatible with the previously shipped 1.6 version of the Open MPI ABI. As a consequence, programs that are built against the earlier version of Open MPI cannot be run under Valgrind included in Red Hat Enterprise Linux 7.2. To work around this problem, use the Red Hat Developer Toolset version of Valgrind for programs linked against Open MPI version 1.6.

Synthetic functions generated by GCC confuse SystemTap

A GCC optimization can generate synthetic functions for partially inlined copies of other functions. These synthetic functions look like first-class functions and confuse tools such as SystemTap and GDB because SystemTap probes can be placed on both synthetic and real function entry points. This can result in multiple SystemTap probe hits per a single underlying function call.
To work around this problem, a SystemTap script may need to adopt countermeasures, such as detecting recursion and suppressing probes related to inlined partial functions. For example, the following script:
probe kernel.function("can_nice").call { }
could attempt to avoid the described problem as follows:
global in_can_nice% probe kernel.function("can_nice").call { in_can_nice[tid()] ++; if (in_can_nice[tid()] > 1) { next } /* real probe handler here */ } probe kernel.function("can_nice").return { in_can_nice[tid()] --; }
Note that this script does not take into account all possible scenarios. It would not work as expected in case of, for example, missed kprobes or kretprobes, or genuine intended recursion.

SELinux AVC generated when ABRT collects backtraces

If the new, optional ABRT feature that allows collecting backtraces from crashed processes without the need to write a core-dump file to disk is enabled (using the CreateCoreBacktrace option in the /etc/abrt/plugins/CCpp.conf configuration file), an SELinux AVC message is generated when the abrt-hook-ccpp tool tries to use the sigchld access on a crashing process in order to get the list of functions on the process' stack.

GDB keeps watchpoints active even after reporting them as hit

In some cases, on the 64-bit ARM architecture, GDB can incorrectly keep watchpoints active even after reporting them as hit. This results in the watchpoints getting hit for the second time, only this time the hardware indication is no longer recognized as a watchpoint and is printed as a generic SIGTRAP signal instead. There are several ways to work around this problem and stop the excessive SIGTRAP reporting.
* Type continue when seeing a SIGTRAP after a watchpoint has been hit.
* Instruct GDB to ignore the SIGTRAP signal by adding the following line to your ~/.gdbinit configuration file:
handle SIGTRAP nostop noprint
* Use software watchpoints instead of their hardware equivalents. Note that the debugging is significantly slower with software watchpoints, and only the watch command is available (not rwatch or awatch). Add the following line to your ~/.gdbinit configuration file:
set can-use-hw-watchpoints 0

Booting fails using grubaa64.efi

Due to issues in pxeboot or the PXE configuration file, installing Red Hat Enterprise Linux 7.2 using the 7.2 grubaa64.efi boot loader either fails or experiences significant delay in booting the operating system. As a workaround, use the 7.1 grubaa64.efi file instead of the 7.2 grubaa64.efi file when installing Red Hat Enterprise Linux 7.2.

MPX feature in GCC requires Red Hat Developer Toolset version of the libmpx library

The libmpxwrappers library is missing in the gcc-libraries version of the libmpx library. As a consequence, the Memory Protection Extensions (MPX) feature might not work correctly in GCC, and the application might not link properly. To work around this problem, use the Red Hat Developer Toolset 4.0 version of the libmpx library.