8.11. 编译器和开发工具
当从 fork 处理程序回调调用 pthread_atfork
或 dclose
时,应用程序不再死锁
在以前的版本中,当 glibc
获取内部锁时,应用程序会调用 pthread_atfork
处理程序回调。因此,注册 fork 处理程序或从 fork 处理程序调用 dclose
可能会导致应用程序死锁。
现在,在 fork 处理程序运行时,可使用不同的同步机制来保护内部数据结构。因此,当从 fork 处理程序回调调用 pthread_atfork
或 dclose
时,应用程序不再死锁。
当只有目录时,Makefile 中的通配符功能不再返回符号链接
在以前的版本中,glob()
使用的 GLOB_ONLYDIR
提示会将符号链接错误地报告为某个 XFS 文件系统上的目录。使用 glob()
时,make
不会确认提示是否是实际的目录,因此,当只有目录时,Makefile 中的通配符功能会返回符号链接。
这个 bug 已解决,当只有目录时,Makefile 中的通配符功能不再返回符号链接。
popen()
不再导致多线程进程崩溃
在以前的版本中,在使用多线程进程中的接口时,popen()
会导致应用程序崩溃。有了这个更新,bug 已修复,在使用 popen()
时,多线程进程不会再崩溃。
有些 IBM 字符集的 0xBC
代码点的映射现在是 U+00AF MACRON
在以前的版本中,IBM256
、IBM277
、IBM278
、IBM280
、IBM284
、IBM297
和 IBM424
字符集编码了 EBCDIC
代码点 0xBC
来作为 Unicode 字符 U+203E OVERLINE
。因此,当使用 glibc
提供的 iconv
程序时,在这些字符集合中包含 0xBC
代码点的转换文本对于非Unicode 字符集(比如 ISO-8859-1
)会失败,因为它们不能编码 U+203E OVERLINE
字符。
有了这个更新,此 bug 已被修复。因此,在所有情况下,IBM277
、IBM278
、IBM280
、IBM284
和 IBM297
字符集都可以转换为 ISO-8859-1
。对于 IBM256
和 IBM424
字符集,如果输入文本包含 0xBC 代码点,则转换不再失败,且对应的输出为 U+00AF MACRON
。
tempnam
函数现在使用 getrandom
来增加生成的文件名的随机性
在以前的版本中,Red Hat Enterprise Linux 8.4 及之后的版本中的 tempnam
函数使用时间派生的随机性来选择路径。因此,在快速连续调用时,tempnam
函数不会生成可能文件名的全集。这个 bug 已被一个新的实现修复,它使用 getrandom
函数来提高生成的文件名称的随机性。现在,tempnam
函数可以生成更多不同的文件名。
POWER9-optimized strncpy 功能不再给出不正确的结果
在以前的版本中,POWER9 strncpy 功能没有使用正确的注册作为 padding NUL 字节的来源。因此,输出缓冲包含未初始化的寄存器内容,而不是 NUL padding。在这个版本中,strncpy 功能已被修复,输出缓冲区的末尾会正确添加 NUL 字节。
en_US@ampm
区域现在可以使用 locale -a
正确列出
在以前的版本中,在 locale -a
命令输出的 en_US@ampm
列表中有一个缺陷。因此,当尝试使用 locale -a
打印的名称/别名设置这个区域时,setlocale
API 会失败。有了这个更新,en_US@ampm
现在可被正确列出,并为 locale -a
打印的所有区域成功调用 setlocale
。
事件的单元掩码现在都包括在 papi_xml_event_info
输出中
在以前的版本中,papi_xml_event_info
中测试事件单元掩码信息不完整。在某些情况下,事件的单元掩码不包含在 papi_xml_event_info
输出中。这个 bug 已修复,因此 papi_xml_event_command
现在可以打印出事件的所有单元掩码。
(BZ#2037426)