第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
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)