8.11. 编译器和开发工具

当从 fork 处理程序回调调用 pthread_atforkdclose 时,应用程序不再死锁

在以前的版本中,当 glibc 获取内部锁时,应用程序会调用 pthread_atfork 处理程序回调。因此,注册 fork 处理程序或从 fork 处理程序调用 dclose 可能会导致应用程序死锁。

现在,在 fork 处理程序运行时,可使用不同的同步机制来保护内部数据结构。因此,当从 fork 处理程序回调调用 pthread_atforkdclose 时,应用程序不再死锁。

(BZ#1888660)

当只有目录时,Makefile 中的通配符功能不再返回符号链接

在以前的版本中,glob() 使用的 GLOB_ONLYDIR 提示会将符号链接错误地报告为某个 XFS 文件系统上的目录。使用 glob() 时,make 不会确认提示是否是实际的目录,因此,当只有目录时,Makefile 中的通配符功能会返回符号链接。

这个 bug 已解决,当只有目录时,Makefile 中的通配符功能不再返回符号链接。

(BZ#1982608)

popen() 不再导致多线程进程崩溃

在以前的版本中,在使用多线程进程中的接口时,popen() 会导致应用程序崩溃。有了这个更新,bug 已修复,在使用 popen() 时,多线程进程不会再崩溃。

(BZ#2065588)

有些 IBM 字符集的 0xBC 代码点的映射现在是 U+00AF MACRON

在以前的版本中,IBM256IBM277IBM278IBM280IBM284IBM297IBM424 字符集编码了 EBCDIC 代码点 0xBC 来作为 Unicode 字符 U+203E OVERLINE。因此,当使用 glibc 提供的 iconv 程序时,在这些字符集合中包含 0xBC 代码点的转换文本对于非Unicode 字符集(比如 ISO-8859-1)会失败,因为它们不能编码 U+203E OVERLINE 字符。

有了这个更新,此 bug 已被修复。因此,在所有情况下,IBM277IBM278IBM280IBM284IBM297 字符集都可以转换为 ISO-8859-1。对于 IBM256IBM424 字符集,如果输入文本包含 0xBC 代码点,则转换不再失败,且对应的输出为 U+00AF MACRON

(BZ#1961109)

tempnam 函数现在使用 getrandom 来增加生成的文件名的随机性

在以前的版本中,Red Hat Enterprise Linux 8.4 及之后的版本中的 tempnam 函数使用时间派生的随机性来选择路径。因此,在快速连续调用时,tempnam 函数不会生成可能文件名的全集。这个 bug 已被一个新的实现修复,它使用 getrandom 函数来提高生成的文件名称的随机性。现在,tempnam 函数可以生成更多不同的文件名。

(BZ#2089247)

POWER9-optimized strncpy 功能不再给出不正确的结果

在以前的版本中,POWER9 strncpy 功能没有使用正确的注册作为 padding NUL 字节的来源。因此,输出缓冲包含未初始化的寄存器内容,而不是 NUL padding。在这个版本中,strncpy 功能已被修复,输出缓冲区的末尾会正确添加 NUL 字节。

(BZ#2091553)

en_US@ampm 区域现在可以使用 locale -a 正确列出

在以前的版本中,在 locale -a 命令输出的 en_US@ampm 列表中有一个缺陷。因此,当尝试使用 locale -a 打印的名称/别名设置这个区域时,setlocale API 会失败。有了这个更新,en_US@ampm 现在可被正确列出,并为 locale -a 打印的所有区域成功调用 setlocale

(BZ#2104907)

事件的单元掩码现在都包括在 papi_xml_event_info 输出中

在以前的版本中,papi_xml_event_info 中测试事件单元掩码信息不完整。在某些情况下,事件的单元掩码不包含在 papi_xml_event_info 输出中。这个 bug 已修复,因此 papi_xml_event_command 现在可以打印出事件的所有单元掩码。

(BZ#2037426)