8.11. コンパイラーおよび開発ツール

fork ハンドラーコールバックから pthread_atfork または dclose を呼び出すときに、アプリケーションがデッドロックしなくなりました

以前は、glibc が内部ロックを取得している間に、アプリケーションが pthread_atfork ハンドラーコールバックを呼び出していました。その結果、フォークハンドラーを登録したり、フォークハンドラーから dclose を呼び出したりすると、アプリケーションがデッドロックする可能性がありました。

fork ハンドラーの実行中に内部データ構造を保護するために、別の Synchronization メカニズムが使用されるようになりました。その結果、フォークハンドラーコールバックから pthread_atfork または dclose を呼び出すときに、アプリケーションがデッドロックしなくなりました。

(BZ#1888660)

ディレクトリーのみが想定されている場合、Makefile のワイルドカード関数はシンボリックリンクを返さなくなりました

以前は、glob() で使用される GLOB_ONLYDIR ヒントが、シンボリックリンクを特定の XFS ファイルシステムのディレクトリーとして誤って報告していました。glob() を使用する場合、make はヒントが実際にディレクトリーであることを確認せず、その結果、ディレクトリーのみが予期される場合に、Makefile のワイルドカード関数がシンボリックリンクを返しました。

バグは修正され、Makefile のワイルドカード関数は、ディレクトリーのみが必要な場合にシンボリックリンクを返さなくなりました。

(BZ#1982608)

popen() がマルチスレッドプロセスをクラッシュさせなくなりました

以前は、popen() の不具合により、マルチスレッドプロセスからインターフェイスを使用すると、アプリケーションがクラッシュしました。今回の更新でバグが修正され、マルチスレッドプロセスが popen() を使用してもクラッシュしなくなりました。

(BZ#2065588)

一部の IBM 文字セットの 0xBC コードポイントのマッピングは U+00AF MACRON になりました

以前は、IBM256IBM277IBM278IBM280IBM284IBM297、および IBM424 文字セットは、EBCDIC コードポイント 0xBC を Unicode 文字 U+203E OVERLINE としてエンコードしていました。その結果、glibc が提供する iconv プログラムを使用する場合、0xBC コードポイントを含む文字セットのテキストの変換は、ISO-8859-1 などの非 Unicode 文字セットでは失敗しました。これは、U+203E OVERLINE 文字をエンコードできなかったためです。

今回の更新で、バグが修正されました。その結果、IBM277IBM278IBM280IBM284、および IBM297 文字セットでの入力は、すべての場合に ISO-8859-1 に変換できます。IBM256 および IBM424 文字セットの場合、入力テキストに 0xBC コードポイントが含まれ、それぞれの出力が U+00AF MACRON である場合に、変換が失敗しなくなりました。

(BZ#1961109)

tempnam 関数は getrandom を使用して、生成されたファイル名のランダム性を高めるようになりました

以前は、Red Hat Enterprise Linux 8.4 以降の tempnam 関数は、パスの選択に時間由来のランダム性を使用していました。その結果、tempnam 関数は、立て続けに繰り返し呼び出されると、可能なファイル名の完全なセットを生成しませんでした。このバグは、getrandom 関数を使用して生成されるファイル名のランダム性を高める新しい実装によって修正されました。その結果、tempnam 関数はより明確なファイル名を生成するようになりました。

(BZ#2089247)

POWER9 向けに最適化された strncpy 関数が誤った結果を返さなくなりました

以前は、POWER9 の strncpy 関数は、埋め込み用の NUL バイトのソースとして正しいレジスターを使用していませんでした。その結果、出力バッファーには、NUL パディングではなく、初期化されていないレジスタコンテンツが含まれていました。今回の更新で、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 出力に含まれていませんでした。このバグは修正され、その結果、papi_xml_event_command はイベントのすべてのユニットマスクを出力するようになりました。

(BZ#2037426)