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 モードで有効になりました。