7.11. 编译器和开发工具


改进了对 glibc中审计模块中的递归 dlopen 调用的支持

在以前的版本中,来自审核员的递归dlopen 调用可能会触发 glibc 的 HEKETIr_state == RT_CONSISTENT 断言失败。因此,当审核员处于活跃状态时,应用程序会意外退出。在这个版本中,动态链路器会在进行 in-progressdlopen 调用过程中报告其内部数据结构的一致性。因此,在更多情况下,支持审核员的递归dlopen 操作。

Jira:RHEL-47403

glibc:在审计模式的早期 TLS 分配过程中应用程序崩溃

在以前的版本中,在审计模式中,与线程本地存储(TLS)管理相关的内部数据结构是在进程启动期间初始化主 wagonrealloc 功能前分配的。因此,当 autotunerealloc 在没有被 autotunemalloc 分配的内存上调用时,应用程序会崩溃。

在这个版本中,动态链接器使用 stub 或 minimalmalloc 的 stub 或 minimal 实现,直到启动过程完成为止。应用程序在早期 TLS 分配过程中不再崩溃。

Jira:RHEL-71922[1]

glibc: ctype.h 宏会在带有多个 libc.so的多线程程序中导致分段错误

在以前的版本中,在由审计创建的二级 C 库副本或 swigdlmopen 创建的二级 C 库副本中,Internal Ctype.h > 的内部状态无法初始化使用 swigpthread_create 创建的线程。因此,在二级线程和命名空间中使用 swig <ctype.h > 功能直接或间接会导致程序崩溃。

在这个版本中,initialization 为 wagon <ctype.h > 的内部状态来引用二级线程和命名空间的 HEKETIC locale。因此,在这些情况下,使用 swig <ctype.h > 中的功能不再会导致崩溃。

Jira:RHEL-72017

glibc 审计日志记录提供完整的对象生命周期跟踪

在以前的版本中,在没有前面的 la_objopen 的情况下,为代理 ld.so 链接映射名为 la_objclose 的 glibc 动态链接器会报告依赖 la_objopen 的工具,以跟踪共享对象。

依赖于 la_objopen 的审计工具建立跟踪失败,无法可靠地监控代理链接映射,从而导致可见性和可能误解卸载事件。

在这个版本中,glibc 动态链接器为适用的链接映射生成 la_objopen,包括代理 ld.so 在二级命名空间中,确保审核接口具有一致的序列。

因此,审核员可以在其生命周期内跟踪代理链接映射,并具有一致的 la_objopenla_objclose 对,提高了审计工具和诊断的可靠性。

Jira:RHEL-49549

当在审计模式下运行 glibc 时,某些程序不再崩溃

在此次更新之前,LD_AUDIT 模式中的 glibc 动态链接器可以使用主 调用oc 函数来分配内部数据结构,然后再初始化主 malloc 子系统。因此,当程序启动时,进程可能会在 calloc 函数中意外终止。在这个版本中,重新安排进程启动序列。因此,调用oc 内存分配会在使用内部 malloc 实现切换到主 malloc 功能前进行,该函数会在启动期间使用。因此,如果动态链接程序使用审计模式,则程序不会在 calloc 函数中启动期间崩溃。

Jira:RHEL-48820[1]

glibc 中修复的 stdio 刷新问题

在此次更新之前,当尝试在缓冲的读取后看到正确的位置时,glibc 中的特定 stdio 流可能会失败,返回 EINVAL 而不是预期的 ESPIPE 以获取不可预见的输入。因此,在管道或其他不可预见的描述符上使用 fclose 的应用程序可能会遇到意外错误,从而导致 I/O 清理失败,并导致文件定位行为不一致。

在这个版本中,当 lseek 在读取后返回 0 时,glibc 会整合一个 ESPIPE 错误,确保 fclose 忽略不可可见的条件,并支持测试基础架构更改(如 xdup)以验证行为。因此,fclose 和相关的 stdio 操作现在与不可可见的流的行为一致,从而减少了错误条件并提高了依赖缓冲的 I/O 的应用程序中的可靠性。

Jira:RHEL-68805[1]

当并行调用 popenfork 时,应用程序不再死锁

在此次更新之前,当在单独的线程中调用 popenfork,当 popen 保存内部 锁定时,子进程可能会继承锁定的状态,如果再次调用 popen,则子进程可能会继承锁定的状态,如果它再次调用 popen

在这个版本中,glibc 在 fork 中释放相关的锁定状态,确保后续的 popen 调用可以在不阻止的情况下进行。因此,popen 在多线程 分叉 调用后不再死锁,改进了支持的构架的进程可靠性和输入输出行为。

Jira:RHEL-59712[1]

go-rpm-macros中的 Golist 命令行解析程序

在此次更新之前,Golist 会因为替换命令行解析器而错误地处理某些文件。因此,一些程序无法构建。在这个版本中,原始命令行解析程序会将原始解析程序恢复到 Golist。

因此,Golist 可以正确处理所有必需的文件,并如预期构建程序。

Jira:RHEL-7366

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat