8.11. コンパイラーおよび開発ツール
fork ハンドラーコールバックから pthread_atfork
または dclose
を呼び出すときに、アプリケーションがデッドロックしなくなりました
以前は、glibc
が内部ロックを取得している間に、アプリケーションが pthread_atfork
ハンドラーコールバックを呼び出していました。その結果、フォークハンドラーを登録したり、フォークハンドラーから dclose
を呼び出したりすると、アプリケーションがデッドロックする可能性がありました。
fork ハンドラーの実行中に内部データ構造を保護するために、別の Synchronization メカニズムが使用されるようになりました。その結果、フォークハンドラーコールバックから pthread_atfork
または dclose
を呼び出すときに、アプリケーションがデッドロックしなくなりました。
ディレクトリーのみが想定されている場合、Makefile のワイルドカード関数はシンボリックリンクを返さなくなりました
以前は、glob()
で使用される GLOB_ONLYDIR
ヒントが、シンボリックリンクを特定の XFS ファイルシステムのディレクトリーとして誤って報告していました。glob()
を使用する場合、make
はヒントが実際にディレクトリーであることを確認せず、その結果、ディレクトリーのみが予期される場合に、Makefile のワイルドカード関数がシンボリックリンクを返しました。
バグは修正され、Makefile のワイルドカード関数は、ディレクトリーのみが必要な場合にシンボリックリンクを返さなくなりました。
popen()
がマルチスレッドプロセスをクラッシュさせなくなりました
以前は、popen()
の不具合により、マルチスレッドプロセスからインターフェイスを使用すると、アプリケーションがクラッシュしました。今回の更新でバグが修正され、マルチスレッドプロセスが popen()
を使用してもクラッシュしなくなりました。
一部の IBM 文字セットの 0xBC
コードポイントのマッピングは U+00AF MACRON
になりました
以前は、IBM256
、IBM277
、IBM278
、IBM280
、IBM284
、IBM297
、および IBM424
文字セットは、EBCDIC
コードポイント 0xBC
を Unicode 文字 U+203E OVERLINE
としてエンコードしていました。その結果、glibc
が提供する iconv
プログラムを使用する場合、0xBC
コードポイントを含む文字セットのテキストの変換は、ISO-8859-1
などの非 Unicode 文字セットでは失敗しました。これは、U+203E OVERLINE
文字をエンコードできなかったためです。
今回の更新で、バグが修正されました。その結果、IBM277
、IBM278
、IBM280
、IBM284
、および IBM297
文字セットでの入力は、すべての場合に ISO-8859-1
に変換できます。IBM256
および IBM424
文字セットの場合、入力テキストに 0xBC コードポイントが含まれ、それぞれの出力が U+00AF MACRON
である場合に、変換が失敗しなくなりました。
tempnam
関数は getrandom
を使用して、生成されたファイル名のランダム性を高めるようになりました
以前は、Red Hat Enterprise Linux 8.4 以降の tempnam
関数は、パスの選択に時間由来のランダム性を使用していました。その結果、tempnam
関数は、立て続けに繰り返し呼び出されると、可能なファイル名の完全なセットを生成しませんでした。このバグは、getrandom
関数を使用して生成されるファイル名のランダム性を高める新しい実装によって修正されました。その結果、tempnam
関数はより明確なファイル名を生成するようになりました。
POWER9 向けに最適化された strncpy 関数が誤った結果を返さなくなりました
以前は、POWER9 の strncpy 関数は、埋め込み用の NUL バイトのソースとして正しいレジスターを使用していませんでした。その結果、出力バッファーには、NUL パディングではなく、初期化されていないレジスタコンテンツが含まれていました。今回の更新で、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
出力に含まれていませんでした。このバグは修正され、その結果、papi_xml_event_command
はイベントのすべてのユニットマスクを出力するようになりました。
(BZ#2037426)