第 4 章 编译器和工具


sockaddr_in的 gcc 兼容性问题解决

默认 RHEL 6 编译器包含有关如何复制 struct sockaddr_in 的规则,这些规则与更新版本的 gcc (E.g.这会导致在使用较新的编译器时损坏 sockaddr_in overlay。
这个版本更改了定义 sockaddr_in 结构 未使用的 部分的方式。现在,新版本的 gcc 将正确复制它们。
请注意,编译此类源仍然需要 -fno-strict-aliasing。(BZ#1338673)

当测量没有分配内存的进程的内存用量时,浮动点异常错误

当在没有显式分配任何额外内存的程序上运行 memusage 工具时,会出现浮点异常。
这个版本会检查零个内部统计信息,且不会按它们划分,从而避免异常。(BZ#1331304)

改进了在传递 IP 地址后扫描接口时 getaddrinfo ()的行为

此之前的 glibc 版本会在 getaddrinfo ()调用引用的接口上扫描每个 IP 地址,即使传递的主机名本身是一个数字 IP 地址。在接口上配置了大量 IP 地址的系统上,这会导致调用过长。
在这个版本中,扫描仅在需要时才进行,调用会在传递数字 IP 地址时快速返回。(BZ#1270950)

修复了在线程取消时处理任何打开的文件描述符的问题

使用 POSIX 线程取消可能会导致 glibc 错误地处理打开的文件描述符,特别是在处理身份信息时保持开放。
要更正此问题,并确保 getpwuid_r 等功能在线程被取消时也是如此,以便正确处理来自 exec 系列功能的任何调用中的开放文件描述符。(BZ#1012343)

修复了 tzdata-update 继承一个不可用的 umask

更新 /etc/localtime 时,tzdata-update 应用当前进程 umask 来确定文件权限。
如果 umask 是限制性值,如 077,则非 root 用户可能无法读取新的 /etc/localtime 文件。要解决这个问题,tzdata-update 现在将权限设置为 rw-r--r--(0644)。(BZ#1373646)

访问未初始数据的 getaddrinfo 解析

在启用了 nscd 的系统上,glibc 中的 getaddrinfo 功能可以访问未初始化的数据并返回 false 地址信息。
这个版本可避免访问未初始化的数据,并确保返回正确的地址。(BZ#1223095)

Mutt中的默认设置或配置中,系统默认 CA 捆绑包已设置为默认设置

在以前的版本中,当通过 TLS/SSL 连接到新系统时,mutt 电子邮件客户端需要用户保存证书。在这个版本中,系统证书颁发机构(CA)捆绑包默认在 Mutt 中设置。因此,mutt 现在通过 SSL/TLS 连接到具有有效证书的主机,而不提示用户批准或拒绝证书。(BZ#1196787)

resolv::DNS 不再返回截断的 DNS 回复

当 DNS 响应不符合硬编码的 512 字节限制时,Ruby Resolv::DNS 解析器静默返回截断的 DNS 回复。因此,大量 DNS 记录需要从 User Datagram Protocol (UDP)升级 DNS 连接来传输控制协议(TCP)来接收完整的 DNS 回复。例如,这会影响到密钥分发中心(KDC)列表包含大量服务器的 Microsoft Active Directory 域。在这个版本中,如果 UDP 回复被截断,使用 TCP Resolv::DNS 重试,这是 RFC 1123 的正确行为。因此,会返回完整的 DNS 回复。(BZ#1331086)

.history 文件位于网络文件系统中时,tcsh 不再变得无响应

在以前的版本中,如果 .history 文件位于网络文件系统中,如 NFS 或 Samba,则 tcsh 命令语言解释器有时会在登录过程中变得无响应。在这个版本中,如果位于网络文件系统中,则不会锁定 .history 文件。因此,在上述情况下 tcsh 不再变得无响应。
请注意,运行多个 tcsh 实例可能会导致 .history 文件被破坏。您可以通过启用显式文件锁定机制来解决这个问题。为此,请在 tcsh 配置文件中的 savehist 选项中添加 lock 参数。例如:
$ cat /etc/csh.cshrc
# csh configuration for all shell invocations.
set savehist = (1024 merge lock)
Copy to Clipboard Toggle word wrap
要强制 tcsh 使用文件锁定,当 .history 位于网络文件系统中时,lock 参数必须是 savehist 选项的第三个参数。在您自己的风险下执行此操作,因为红帽不保证使用 lock 参数可防止 tcsh 在登录过程中变得无响应。(BZ#885901)

LWP::UserAgent Perl 模块现在可以正确地处理 HTTPS 请求的代理设置

默认情况下,LWP::UserAgent Perl 模块不会遵循 HTTPS 代理环境变量。perl-libwww-perl 软件包版本 5.883-3 使用 IO::Socket::SSL 模块启动,而不是 Net::SSL 模块来实现 TLS。因此,依赖 Net:SSL 模块中处理 https_proxy 环境变量的应用程序直接建立到 HTTPS 服务器的连接,而不是通过 HTTPS 代理服务器。
在这个版本中,Net::SSL 模块的行为已添加到 LWP::UserAgent 模块中,以确保 https_proxyHTTPS_PROXY 环境变量如果没有 env_proxy 选项传递给 LWP::UserAgent 模块的 new () 方法,则会满足。另外,现在可识别没有 URL 模式的代理规格。因此,在从 perl-libwww-perl 软件包切换到 IO::Socket::SSL 加密后端后,使用 Net::SSL 模块的应用程序可以正常工作。(BZ#1400632)

Frontier::Client Perl 模块不再忽略 HTTPS 请求的代理设置

当使用 Frontier::Client Perl 模块通过代理服务向 HTTPS 服务器发送 XML-RPC 请求时,代理设置之前会被忽略。因此,请求会直接发送到 HTTPS 服务器,而不是通过代理服务器。在这个版本中, Frontier::Client Perl 模块已被修正,将代理设置传递给 HTTP 和 HTTPS 模式ta 的底层 LWP::UserAgent 对象,现在还遵循 HTTPS 请求的代理设置。(BZ#832390)

RPM 验证不再报告 /var/account/pacct 文件中的故障

在以前的版本中,RPM 验证和合规性检查会报告失败,因为安装后没有设置 /var/account/pacct 文件的模式。要修复这个程序错误,/var/account/pacct 的模式会在安装后马上更改为 0600。因此,RPM 验证检查不再报告 /var/account/pacct 中的失败,该文件现在只能被 root 访问。(BZ#1182317)

tcsh 中的 作业输出现在可以正确显示到 stdout

在以前的版本中,作业 内置命令的输出显示为标准错误,而不是标准输出。这个程序错误已被解决,作业输出现在可以正确地显示到 stdout。(BZ#1338986)

修复了 tcsh 中的多个回归

在这个版本中解决了 tcsh 命令语言解释器中的几个回归问题:
  • 当使用 Ctrl+P 或上 箭头键 浏览命令历史记录时,现在可以正确显示反斜杠。
  • 现在,反斜杠可以正确地转义用户定义的别名;这修复了 git-completion。
  • 现在,在与内置的 setenv 命令一起使用时,内置 time 命令的输出会被正确捕获。(BZ#1334751)

Git shortlog 不再会因为使用空闲的内存而崩溃

在以前的版本中,当只当电子邮件地址条目不同时,git shortlog 命令的 .mailmap 功能不会用 strdup 指针替换重复的电子邮件条目,并引用空闲的内存。因此,由于使用已释放的内存,Git 会意外终止。应用了补丁,以确保在替换这些条目前内存会被释放,git shortlog 可以正确地使用分配的内存。(BZ#874659)

当试图向字符串报告 Can't coerce HASH 时,Perl 解释器不再崩溃

当在 mod_perl 环境中运行 XML::LibXSLT Perl 脚本时,Perl 解释器可能会意外终止并出现分段错误,同时尝试报告 Can't coerce HASH 到字符串 运行时错误。打印错误消息的代码已被修改,以正确处理缺少的脚本行详情,Perl 解释器不再会在这种情况下崩溃。(BZ#1364206)

gdbserver 现在支持从容器中无缝调试进程

在此次更新之前,当 GDB 在 Super-Privileged Container (SPC)中执行,并附加到在 Red Hat Enterprise Linux Atomic Host 上另一个容器中运行的进程,GDB 并没有找到主可执行文件的二进制镜像,或者进程加载的任何共享库被调试。
因此,GDB 可能会显示与不存在的文件相关的错误消息,或者存在但不匹配。另外,GDB 可能已被认为正确附加,但后续命令可能会失败或显示损坏的信息。
在 Red Hat Enterprise Linux 6.9 中,gdbserver 已扩展,支持容器调试进程。Red Hat Enterprise Linux 6.9 版本新支持 qXfer:exec-file:readvFile:setfs 数据包。但是,Red Hat Enterprise Linux 6.9 版本的 gdb 无法使用这些数据包。建议将 Red Hat Developer Toolset 4.1 (或更新版本)用于容器和 Red Hat Enterprise Linux 6.9 gdbserver 一起使用。也可以使用 Red Hat Developer Toolset 版本的 gdbserver
Red Hat Enterprise Linux 6.9 gdb 现在建议在运行 with the -p 参数(或 attach 命令)时,使用 gdbserver。同时,它会检测正在附加的进程来自容器。Red Hat Enterprise Linux 6.9 gdb 现在还建议明确使用 file 命令来指定被调试容器中的进程可执行文件的位置。当使用 Red Hat Developer Toolset 版本 gdb 时,不需要输入 file 命令。
在这个版本中,Red Hat Enterprise Linux 6.9 gdbserver 提供从容器以及 Red Hat Developer Toolset 4.1 (或更新版本) gdb 的无缝调试。另外,当 Red Hat Developer Toolset gdb 不可用时,Red Hat Enterprise Linux 6.9 gdb 会指导用户完成容器的进程调试。(BZ#1316539)
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat