第6章 コンパイラーおよびツール
コマンドが中断された後、tcsh が一貫性のない状態になることはなくなりました。
eval sleep 10 コマンドを中断すると、
tcsh シェルが一貫性のない状態のままになります。そのため、シェルを正常に終了するには、Ctrl+D のキーの組み合わせを 2 回押す必要がありました。今回の更新により、Ctrl+D を 一度押すと tcsh が正しく終了するようになりました。(BZ#1219923)
tcshの if ステートメントの解析が正しく行われる。
then キーワードの前にスペースがない場合に、tcsh シェルは if ステートメントを正しく解析できませんでした。その結果、if ステートメントの誤ったブランチが処理され、コード内の誤ったセクションが実行され、誤った動作が発生していました。then キーワードの前にスペースがない場合にソースコードを正しく処理するように tcsh シェルが修正されました。(BZ#1231097)
RELRO 保護が要求されたときに適切に適用されるようになりました
以前は、システムローダーによって開始されたバイナリーファイルは、アプリケーションが構築されるときに明示的に要求されていても、Relocation Read-Only (RELRO)保護が欠落していた場合がありました。これは、静的リンカーとシステムローダー間の通信ミスが原因でした。リンカーの基礎となるソースコードが、ローダーが RELRO 保護を適用できるように調整され、アプリケーションのセキュリティー機能を復元できるようになりました。以前のバージョンの binutils で構築されたアプリケーションおよびすべての依存オブジェクトファイル、アーカイブ、およびライブラリーを再構築して、この不具合を修正する必要があります。(BZ#1227839)
tcshによって正しく解釈されるシーケンスのエスケープ
以前は、
tcsh コマンド言語インタープリターが、バックスラッシュ \ 文字で始まる特定のエスケープシーケンスを誤って使用していました。今回の更新で、エスケープシーケンスの解釈が修正され、tcsh が Red Hat Enterprise Linux 5 と同じ結果を返すようになりました。(BZ#1301857)
マルチ CPU システムでより高いパフォーマンス向けに調整された OpenMP ヒューリスティック
GNU OpenMP ランタイム(
libgomp )で使用されるヒューリスティックが、マルチプロセッサーシステムの CPU アフィニティーを考慮し、低いスピンカウントを使用するように調整されました。その結果、リソース不足により、デッドロックまたは実行が非常に遅くなるプログラムのパフォーマンスが大幅に速くなりました。(BZ#1229852)
ロックの競合が削減され、localtime_r ()を呼び出すスレッドアプリケーションのパフォーマンスが向上します。
これまで localtime_r ()関数のロック競合により、この関数を頻繁に呼び出すために必要なスレッドされたアプリケーションのパフォーマンスが低下します。
glibc ライブラリーの内部ルーチンのロック取得が再編成され、ロックの競合の可能性が減少しました。(BZ#1244585)
$$eval コマンドまたは $(shell) 設定の処理時に、make ユーティリティーが予期せず終了しなくなりました。
make パッケージのバグにより、
$$eval コマンドまたは $(shell) プロセスが含まれるファイルの処理時に、make ユーティリティーが予期せず終了する場合があります。これらのバグが修正され、このような状況でクラッシュしなくなりました。(BZ#835483)
並列ビルドが予期せず終了しなくなりました。
以前は、バグにより、
make ユーティリティーがエラーメッセージを表示し、並列ビルドの実行時に予期せず終了していました。これは修正され、このバグが原因で並列ビルドがクラッシュしなくなりました。(BZ# 861189)
$(eval) コンストラクトが原因で並列ビルドが予期せず終了しなくなりました。
以前は、
$(eval) コンストラクトを含む並列ビルドを実行すると、バグにより make ユーティリティーが予期せず終了していました。これは修正され、このバグが原因で並列ビルドがクラッシュしなくなりました。(BZ#1093149)
dprintf ()および fork ()を同時に呼び出すときに、マルチスレッドアプリケーションがクラッシュしなくなりました
以前は、dprintf ()および fork ()
glibc 関数を使用するマルチスレッドアプリケーションは、以前はセグメンテーションフォールトで予期せず終了する可能性があります。今回の更新で、dprintf ()で作成された一時的なストリームを無視するように fork ()の実装が修正され、上記の問題は発生しなくなります。(BZ#1275384)
malloc ()のスケーラビリティーを高めるためにコア C ライブラリー(glibc)が強化されました。
malloc () 関数の実装に欠陥があると、スレッド間でメモリー割り当て要求の不必要なシリアライズが発生する可能性があります。今回の更新で問題が修正され、頻繁にスレッドを作成し、破棄するアプリケーションに対する割り当てリクエストの同時スループットが大幅に向上するようになりました。(BZ#1264189)
/etc/mcelog/mcelog.confのドキュメントの改善
/etc/mcelog/mcelog.conf にあるデフォルトの mcelog 設定ファイルには、mem-ce-error-log など、いくつかの利用可能なオプションのより良い説明が含まれるようになりました。(BZ#1170580)
監査モジュールが DSO パスを提供する場合、動的リンカー(ld.so)が失敗しなくなりました。
以前は、監査モジュールで別の DSO (動的共有オブジェクト)パスが提供されると、
ld.so 動的リンカーがセグメンテーションフォールトで予期せず終了していました。この更新でバグに対応し、動的リンカーが今後の参照のために元の DSO パスを追跡するようになり、失敗しなくなりました。(BZ#1211098)
glibc および tzdata が更新され、/etc/localtime シンボリックリンクが置き換えられなくなりました。
以前は、
/etc/localtime ファイルがシンボリックリンクであるシステムでは、glibc および tzdata パッケージの更新により、リンクが /etc/sysconfig/clock 設定ファイルで定義されたタイムゾーンファイルに置き換えられました。この問題に対応するパッチが適用され、シンボリックリンクとしての /etc/localtime は置き換えられなくなりました。最適な互換性を得るためには、/etc/localtime を直接変更しないことが推奨されます。代わりに、/etc/sysconfig/clock 設定ファイルを編集し、後で tzdata-update コマンドを実行します。(BZ#1200555)
glibc POSIX リアルタイムサポートが大規模な TLS データで失敗しなくなりました。
glibc ライブラリーでの POSIX リアルタイムサポートの欠陥により、非同期 I/O または特定のタイマー API 呼び出しが大きなスレッドローカルストレージ(TLS)データがある場合に失敗していました。librt ライブラリーが修正され、大規模な TLS データがアプリケーションに存在する場合、影響を受ける API はエラーメッセージを返しなくなりました。(BZ#1299319)
iconv は冗長なシフトシーケンスを追加しなくなりました。
以前は、
アイコンv ユーティリティーは、IBM930、IBM933、IBM935、IBM937、および IBM939 文字セットの文字変換を誤処理しないことがありました。そのため、iconv の出力に冗長なシフトシーケンスが含まれました。生成された非整列出力により、出力データを読み取れなくなることがあります。文字変換ルーチンが修正され、冗長なシフトシーケンスを出力しなくなりました。(BZ#1293914)
/etc/gai.conf が glibc-common パッケージに属するものとして表示されなくなりました
以前は、rpm -V コマンドを使用して glibc-common パッケージを確認する際に、そのパッケージがそのファイルを所有していなくても、
/etc/gai.conf 設定ファイルに変更済みとしてフラグを立てることができました。今回の更新で、glibc-common から誤ったファイルエントリーが削除されました。その結果、rpm -V glibc-common は、変更された /etc/gai.conf 設定ファイルを一覧表示しなくなりました。(BZ#1223818)
java-1.8.0-openjdk インストール の命名規則が一貫している
以前は、java- 1.8.0-openjdk パッケージのインストールディレクトリーに対して自動生成された名前は、java-1. 6. 0-openjdk パッケージおよび java-1.7.0-openjdk パッケージのインストールディレクトリー名と一致していませんでした。そのため、java-1.8.0-openjdk と対話するときに、一貫性のある Java 命名パターンを期待するアプリケーションおよび自動化ツールが失敗しました。今回の更新で、java-1.8.0-openjdk インストールディレクトリーは以前のバージョンと同じパターンに従うようになり、上記の問題を防ぎます。パス構造の変更により、この更新の前に java-1.8.0-openjdk のバージョンに戻すことは不可能になりました。(BZ#1217177)
LDAP バインドパスワードが適切に難読化される
以前は、
sosreport ユーティリティーが LDAP バインド認証情報をプレーンテキストでキャプチャーすることが可能でした。この問題は修正され、LDAP バインドパスワードが期待どおりに sosreport で難読化されるようになりました。(BZ#1227462)
ipa-replica-image の使用時に sosreport がタイムアウトしなくなりました。
以前は、ipa-replica-image コマンドを使用すると、
sosreport ユーティリティーの実行に時間がかかり、場合によってはタイムアウトが発生していました。さらに、認定関連の問題のトラブルシューティングに必要なすべての情報が sosreport でキャプチャーされたわけではありません。この更新により、sosreport により十分な認定関連の情報が収集され、ipa-replica-image が削除され、上記のタイムアウトが阻止されます。(BZ#1203947)
tar が when-- acls の使用時に ACL を正しく設定するようになりました。
以前は、the-
acls オプションを使用して tar ファイルを抽出すると、抽出されたファイルは、親ディレクトリーからデフォルトのアクセス制御リスト(ACL)を継承していました。この更新により、when-- acls が使用され、tar はアーカイブで設定されている同じ ACL ですべてのファイルとディレクトリーを抽出します。(BZ#1220891)
tar が、大規模な UID を持つユーザーが作成したアーカイブを正しく処理します
2097151 を超える UID または GID を持つユーザーが pax アーカイブを作成した場合、アーカイブが正しく作成されましたが、
tar は誤った警告メッセージとゼロ以外の終了ステータスを返しました。このバグは修正され、tar は正しい終了ステータスで終了し、false 警告メッセージなしになりました。(BZ#1247788)
長い引数が原因でバッファーオーバーフローを防ぐためのProfileProfile を修正しました。
この更新より前は、OProfile の引数チェックコードは、長いパス名またはイベントユニットマスクを渡す際にバッファーオーバーフローを引き起こす問題の影響を受けていました。今回の更新で問題に対処し、long 引数によってバッファーオーバーフローが生じなくなりました。(BZ#1206242)
Rete が IBM POWER7+ システムで正常に動作するようになりました。
今回の更新以前は、IBM POWER Systems の Rete は古いバージョンの
libpfm ライブラリーを使用して構築されていました。これにより、POWER7+ プロセッサーが利用できなくなり、operf ツールおよび ocount ツールは新規の IBM POWER Systems で正常に実行できませんでした。このバグは修正され、operf コマンドと ocount コマンドが POWER7 以降で期待どおりに機能するようになりました。(BZ#1303970)
アプリケーションは 'dlopen: 失敗しなくなったため、静的 TLS でオブジェクトを読み込めません。
glibc 動的ローダーは、静的スレッドローカルストレージ(TLS)を使用する 16 を超える共有ライブラリーを読み込むことができませんでした。その結果、アプリケーションはエラーメッセージ dlopen: cannot load any more object with static TLS で失敗する可能性がありました。このバグは修正され、十分な静的ストレージ領域が利用可能な場合、このシナリオではアプリケーションが正しく起動されるようになりました。(BZ#1198802)
GDB がより小さなコアファイルを生成し、コアダンプのフィルターに従うようになりました。
GDB に独自のコアダンプ機能を提供する gcore コマンドが更新され、Linux カーネルのコアダンプコードの機能をより詳細にシミュレーションし、小さなコアダンプファイルを生成します。GDB は /proc/PID/coredump_filter ファイルも尊重するようになり、どのメモリーセグメントがコアダンプファイルに書き込まれるかを制御します。(BZ#1085906)
GDB は、削除された実行可能ファイルを含む実行中のプロセスを強制しなくなる
この更新以前は、
GDB が削除済みの実行ファイルを使用して実行中のプロセスにアタッチしようとすると、プロセスが誤って強制終了されていました。このバグは修正され、GDB は削除された実行ファイルを持つプロセスを誤って強制終了しなくなりました。(BZ#1219747)
Bashでのシグナル処理を修正
シグナルハンドラー関数が
malloc () などの特定の signal-unsafe 関数を呼び出すため、Bash シェルはシグナルを受信した後に応答しなくなることがありました。この更新により、シグナルハンドラーが signal-unsafe 関数を呼び出さなくなり、上記のバグが発生しなくなりました。(BZ# 868846)
コマンドの置換が bashの算術式内で機能するようになりました。
以前は、
bash はシェルパーサーへの再帰呼び出し全体で入力ライン状態を保存しなかったため、シェルは算術式内のコマンド置換を解析できませんでした。たとえば、以下のコマンドが失敗しました。
for point in "/boot"; do disk_dir["$( df -P $point | awk '{print $1}' )"]=1; done
このバグが修正され、
bash はパーサーへの再帰呼び出しを行う前に入力ライン状態を保存するようになり、コマンド置換が算術式内で機能するようになりました。(BZ#1207803)
KornShell は、シグナルトラップをリセットして期待どおりに変更し、クラッシュしなくなりました
以前は、特定の信号トラップをリセットまたは変更しようとすると、KornShell (ksh)がセグメンテーション違反で予期せず終了していました。今回の更新により、ksh は文字列リテラルに使用されるメモリーを解放しようとしなくなりました。その結果、上記の状況で ksh がクラッシュしなくなりました。(BZ#1247383)
拡張属性と ACL がサポートされていない場合に、ls 出力の出力に時間がかかりなくなりました。
以前は、拡張属性とアクセス制御リスト(ACL)に対応しないファイルシステムのファイルとディレクトリーのリストには、すべてのファイルに対して不要で高コストの lstat ()および lgetxattr ()システムコールが関与していました。その結果、ls コマンドの出力を出力するのに数秒かかる場合があります。今回は、システムコールの結果が
サポートされていない 場合、ls はこのマウントポイントで呼び出しを再試行しません。その結果、上記の状況で ls 出力の出力速度が大幅に改善されました。(BZ#1248141)
KornShell は、フォーク時にコマンドリストのバックグラウンドプロセスを省略しなくなりました
KornShell (ksh)のバグにより、コマンドリストでバックグラウンドプロセスをフォークすると、以前はそのプロセスを完全に省略する可能性がありました。フォークサブプロセスを処理するソースコードが変更され、コマンドリスト内のバックグラウンドプロセスが期待どおりに実行されるようになりました。(BZ#1217236)
KornShell でマルチバイト文字が破損しなくなる
以前は、マルチバイト Unicode パーサーは、KornShell (ksh)でコマンドラインオプション変数の後に入力を移動していました。その結果、コマンドライン変数の後のマルチバイト文字が破損しました。複数バイトの入力解析を修正するためにパッチが適用されました。その結果、上記の状況ではマルチバイト文字が正しく処理されます。(BZ#1256495)
Oracle ACFSが既知のファイルシステムに含まれているようになりました。
以前は、Oracle ASM クラスターファイルシステム(ACFS)は
stat ユーティリティーおよび tail ユーティリティーの既知のファイルシステムに表示されていませんでした。その結果、tail ユーティリティーは、ファイルシステムが認識されなかったことを示すエラーメッセージを出力します。ACFS が既知のファイルシステムのリストに追加され、上記の状況ではエラーメッセージが表示されなくなりました。
さらに、アップストリームが認識する他のファイルシステムが、既知のファイルシステムのリストにも追加されました。つまり、
cfs、bpf_fs、btrfs_test、configfs、efivarfs、efivarfs、f2fs、hfs+、hfsx、hostfs、ibrix、logfs、nsfs、overlayfs、smackfs、snfs、tracefs、および ubifs (BZ#1280333)
netfs stop コマンドが、関連するループデバイスのみをアンマウントするようになりました。
以前は、
netfs サービスを停止する際に、すべてのループデバイスが切り捨てられていました。今回の更新で、netfs stop コマンドを実行すると、関連するループデバイスのみがアンマウントされます。つまり、ネットワークマウントにマウントされているデバイスです。(BZ#1156231)