8.11. コンパイラーおよび開発ツール
glibc system() 関数は、以前の信号マスクを無条件に復元するようになる
以前は、glibc system() 関数が複数のスレッドから同時に呼び出された場合、SIGCHLD シグナルのシグナルマスクが正しく復元されないことがありました。その結果、一部のスレッドでは glibc system() 関数から戻った後も、SIGCHLD シグナルがブロックされたままでした。
今回の更新により、glibc system() 関数は、並列 system() 関数呼び出しが実行されている場合でも、以前の信号マスクを無条件に復元するようになりました。その結果、glibc system() 関数が複数のスレッドから同時に呼び出された場合に、SIGCHLD シグナルが誤ってブロックされることがなくなりました。
eu-addr2line -C が他の引数を正しく認識するようになる
以前は、elfutils の eu-addr2line コマンドで -C 引数を使用すると、次の 1 文字の引数が消えていました。その結果、eu-addr2line -Ci コマンドは eu-addr2line -C と同じように動作し、eu-addr2line -iC は期待どおりに動作しました。このバグは修正され、eu-addr2line -Ci は両方の引数を認識するようになりました。
eu-addr2line -i は、GCC リンクタイム最適化でコンパイルされたコードを正しく処理するようになる
以前は、elfutils に含まれる libdw ライブラリーの dwarf_getscopes 関数は、GCC リンクタイム最適化でコンパイルされた関数の抽象オリジン定義を見つけることができませんでした。したがって、eu-addr2line コマンドで -i 引数を使用すると、eu-addr2line は gcc -flto でコンパイルされたコードのインライン関数を表示できませんでした。今回の更新により、libdw dwarf_getscopes 関数はインライン化スコープの正しいコンパイル単位を検索し、eu-addr2line -i は期待どおりに動作するようになりました。
papi を使用するプログラムがシャットダウン時に停止しなくなる
以前は、papi が一部のコンポーネントを初期化する前に、papi はスレッドを初期化していました。このため、配列内の要素の数を記述する特定のコンポーネントのエントリーが正しい値に設定されず、ゼロサイズのメモリー割り当てが試行されました。その結果、その後アクセスしてこれらのゼロサイズのメモリー割り当てを解放すると、プログラムが停止してしまいました。
このバグは修正され、papi を使用するプログラムはシャットダウン時に停止しなくなりました。
OpenJDK XML 署名プロバイダーが FIPS モードで機能するようになる
以前は、OpenJDK XML 署名プロバイダーは FIPS モードで動作できませんでした。FIPS モードのサポートが強化された結果、OpenJDK XML 署名プロバイダーが FIPS モードで有効になりました。