11.11. 编译器和开发工具
对 glibc 软件包进行了更新,使其包含来自上游 2.39 版本的程序错误修正和增强
上游开发为 glibc 2.39 提供了多个程序错误修复和增强。因此,RHEL 10 glibc 比上游版本已过时,从而导致功能和未解决的错误。要解决这个问题,glibc 2.39 上游发行版本分支中的修复和增强被向后移植到 RHEL 10。因此,RHEL 10 glibc 现在在 2025 年 8 月 20 日起提供与上游 glibc 2.39 发行分支的功能和错误奇偶校验。
当在审计模式下运行 glibc 动态链接程序时,某些程序不再崩溃
在以前的版本中,在链接程序初始化主wagon malloc 子系统前,在链接器初始化主 autotunemalloc 子系统前,可以使用主数据结构来分配内部数据结构。 因此,某些程序在启动时意外终止在 wagoncalloc 函数中。在这个版本中,进程启动序列已被重新安排,以便在切换到主 HEKETImalloc 功能前发生 wagoncalloc 内存分配功能,并在启动时使用内部 autotunemalloc 实现。因此,当动态链接器处于审计模式时,程序不再会在 HEKETIcalloc 函数中启动期间崩溃。
Jira:RHEL-109703[1]
改进了对 glibc中审计模块中的递归 dlopen 调用的支持
在以前的版本中,来自审核员的递归dlopen 调用可能会触发 glibc 的 HEKETIr_state == RT_CONSISTENT 断言失败。因此,当审核员处于活跃状态时,应用程序会意外退出。在这个版本中,动态链路器会在进行 in-progressdlopen 调用过程中报告其内部数据结构的一致性。因此,在更多情况下,支持审核员的递归dlopen 操作。
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 > 中的功能不再会导致崩溃。
当 NSS 合并在 glibc 中遇到 HEKETIERANGE 时,getent group 现在会返回完整的成员列表
在此次更新之前,两个组条目之间的合并可能会失败,因为名称服务交换机(NSS)从两个源中合并的组的系统上存在太小的内部缓冲区。在这种情况下,glibc 会错误地跳过合并,而不是使用更大的缓冲区重试。因此,在某些情况下,查询组成员资格会生成不完整或为空的结果,会导致具有多个组数据库的环境。
在这个版本中,glibc 可以正确地处理合并失败,并使用正确大小的缓冲重试,而不是跳过结果。因此,当组从多个服务合并时,组成员资格查询会可靠地返回完整的成员集合。
Jira:RHEL-114264[1]
glibc 审计日志记录提供完整的对象生命周期跟踪
在此次更新之前,名为 la_objclose 的 glibc 动态链接器为代理 ld.so 链接映射在一个二级命名空间中,没有 la_objopen。这会导致对象生命周期报告依赖 la_objopen 跟踪共享对象的工具不完整。
因此,依赖 la_objopen 的审计工具建立跟踪失败,无法可靠地监控代理链接映射,从而导致可见性和可能的错误解释。
在这个版本中,glibc 动态链接器为所有适用的链接映射生成 la_objopen 事件,包括在二级命名空间中,确保审核接口具有一致的序列。
因此,审计工具可在其整个生命周期中跟踪代理链接映射,其一致的 la_objopen 和 la_objclose 事件对,提高了审计工具和诊断的可靠性。