Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 33 章 编译器和工具

通过 FCoE 从 SAN 引导时的多个错误

当前从存储区域网络(SAN)通过以太网使用光纤通道(FCoE)引导时会出现多个错误。对于这些程序错误的修复,红帽针对 Red Hat Enterprise Linux 7 的未来发行版本为目标。如需受影响的程序漏洞和临时解决方案列表(可用),请联系您的红帽支持代表。

Valgrind 无法针对早期版本的 Open MPI 运行构建的程序

Red Hat Enterprise Linux 7.2 仅支持版本 1.10 中的 Open MPI 应用程序二进制接口(ABI),它与之前提供的 Open MPI ABI 版本不兼容。因此,针对早期版本的 Open MPI 构建的程序无法在 Red Hat Enterprise Linux 7.2 中包含的 Valgrind 下运行。要临时解决这个问题,在与 Open MPI 版本 1.6 相关联的程序中使用 Red Hat Developer Toolset 版本 Valgrind。

GCC confuse SystemTap 生成的复合功能

GCC 优化可以为其他函数的部分内联副本生成复合函数。这些复合函数类似于第一类功能和混淆工具,如 SystemTap 和 GDB,因为 SystemTap 探测可以放在复合和实际功能入口点上。这可能导致每个底层功能调用有多个 SystemTap 探测命中。
要临时解决这个问题,SystemTap 脚本可能需要采用计数器,如检测递归和阻止与内联部分功能相关的探测。例如,以下脚本:
probe kernel.function("can_nice").call { }
可能会尝试避免描述的问题,如下所示:
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 rhncfg/ } probe kernel.function ("can_nice").return { in_can_nice[tid ()] --; } }
请注意,此脚本不会考虑所有可能的情况。例如,当丢失的 kprobes 或 kretprobes 或 genuine 预期递归时,它不会按预期工作。

ABRT 收集后端时生成的 SELinux AVC

如果新的、可选的 ABRT 功能允许从崩溃的进程收集回溯追踪,而不需要将 core-dump 文件写入磁盘(使用 /etc/abrt/plugins/CCpp.conf 配置文件中的 CreateCoreBacktrace 选项),则当 abrt-hook-ccpp 工具试图对崩溃进程使用 sigchld 访问时,会生成 SELinux AVC 消息。

GDB 即使将其报告为点击后仍保持监视点

在某些情况下,在 64 位 ARM 架构中,GDB 无法错误地保持监视点,即使将其报告为命中。这会产生第二个时间达到的观察点,只有硬件表示不再被识别为监视点,而是被打印为通用 SIGTRAP 信号。可以通过多种方式解决这个问题,并停止过度的 SIGTRAP 报告。
在达到监视点后看到 SIGTRAP 时,QTi 类型 将继续
Ice 指示 GDB 忽略 SIGTRAP 信号,方法是在 ~/.gdbinit 配置文件中添加以下行:
处理 SIGTRAP nostop noprint
Dan 使用软件监视点而不是它们的硬件等效点。请注意,在软件监视点时调试非常慢,只有 watch 命令可用(不 rwatchawatch)。在您的 ~/.gdbinit 配置文件中添加以下行:
set can-use-hw-watchpoints 0

使用 grubaa64.efi 引导失败

由于 pxeboot 或 PXE 配置文件中的问题,使用 7.2 grubaa64.efi 引导装载程序安装 Red Hat Enterprise Linux 7.2 会失败或遇到引导操作系统时出现显著延迟。作为临时解决方案,在安装 Red Hat Enterprise Linux 7.2 时,使用 7.1 grubaa64.efi 文件而不是 7.2 grubaa64.efi 文件。

GCC 中的 MPX 功能需要 libmpx 库的 Red Hat Developer Toolset 版本

libmpx 包装程序库在 libmpx 库的 gcc-libraries 版本中缺失。因此,内存保护扩展(MPX)功能在 GCC 中可能无法正常工作,应用程序可能无法正确链接。要临时解决这个问题,请使用 libmpx 库的 Red Hat Developer Toolset 4.0 版本。