第3章 コンパイラーおよびツール
C の例外処理により予期しない終了が生じなくなりました。
以前は、C 例外を処理するコードの誤ったチェックが原因で、32 ビットの Intel アーキテクチャーで誤ったアンワインドルーチンが呼び出されていました。その結果、
glibc ライブラリーの pthread_cond_wait () 関数は、glibc を使用して C プログラミング言語で書き込まれた制限やアプリケーションのデータを予期せずに書き込む可能性がありました。誤ったチェックが修正され、予期しない終了は発生しなくなります。(BZ#1104812)
the -pie オプションを使用して作成された実行ファイルが正しく起動するようになりました。
以前は、
binutils パッケージに含まれるリンカーは、32 ビット Intel アーキテクチャーの位置に依存しないバイナリーの動的再配置が正しく生成されていました。その結果、the -pie コンパイラーオプションを使用したコードをビルドすると、起動に失敗したバイナリーファイルが生成されました。リンカーが修正され、正しく実行される位置独立実行可能ファイルが生成されるようになりました。(BZ#1427285)
/etc/hosts.confに応じた API のスレッドキャンセルのサポート
setmntent () 関数に対するスレッドキャンセルのサポートの欠陥により、関数が失敗し、成功が予想されるエラーが返される可能性がありました。そのため、setmntent () に依存するプログラムが起動に失敗する可能性がありました。setmntent ()機能が 修正され、期待どおりに機能するようになりました。
さらに、
setttyent () 関数および setnetgrent () 関数、および /etc/hosts.conf ファイルに依存するすべての API が強化され、スレッドのキャンセルのサポートが改善されました。(BZ#1437147)
初期化されたデータの後にコードを含む無効な実行ファイルが生成されなくなりました。
以前は、コードの後にゼロ値に初期化された後に、binutils の
ld リンカーがコードをメモリー内の誤った場所に配置していました。その結果、リンクされた実行可能ファイルのプログラムは、セグメンテーションフォールトで予期せず終了しました。リンカーが修正され、データの領域が適切に割り当てられ、実行可能コードが正しい開始アドレスに配置されるようになりました。その結果、リンクされた実行ファイルが正しく実行されるようになりました。(BZ#1476412)
フィルターの長いリストを提供するときに、ss プログラムが停止しなくなりました
以前は、ss コマンドにフィルターの長いリストを提供した場合、整数値がオーバーフローしていました。その結果、's' ツールはプログラムの実行を停止する可能性がありました。この更新により、ソースコードの障害のあるビットが修正され、上記の問題は発生しなくなります。(BZ#1476664)
SystemTap により負荷が高いシステムでカーネルパニックが生じなくなりました
以前は、
SystemTap ツールのプローブが複数プロセスによって同時に追加および削除されると、カーネルパニックが発生していました。その結果、負荷が高いシステムで SystemTap モジュールをアンロードすると、カーネルパニックが発生することがありました。プローブを削除する手順が修正され、上記の状況で SystemTap でカーネルパニックが発生しなくなりました。(BZ#1525651)