6.2. コンパイラーおよびツール

SystemTap Dyninst バックエンドは、dyninst-devel パッケージなしで動作します。

stap --dyninst コマンドは、SystemTap Dyninst バックエンドを使用します。以前は、dyninst-devel パッケージがインストールされていない場合、このバックエンドは機能しませんでした。その結果、SystemTap は予期せず終了し、ユーザーは dyninst-devel を手動でインストールし、回避策として ldconfig ツールを実行する必要がありました。このバグは修正され、SystemTap Dyninst バックエンドは dyninst-devel パッケージなしで機能するようになりました。

(BZ#1498558)

GDB ブレークポイントのデフォルトソースファイルがシンボリックリンクで機能する

以前は、GDB デバッガーは、ファイルがシンボリックリンクである場合、デフォルトのソースファイルのシンボルテーブル情報を見つけることができませんでした。その結果、ユーザーはソースファイル名を省略してデフォルト (break 63 など) を使用してブレークポイントを設定できませんでした。このバグは修正され、ユーザーはシンボリックリンクの背後にあるファイルにブレークポイントを持つデフォルトのソースファイルを使用できるようになりました。

(BZ#1639077)

glibc の DNS スタブリゾルバーは、hostname-.example.com などの有効なホスト名を拒否しなくなりました。

glibc の DNS スタブリゾルバーは、hostname-.example.com などの特定の有効なホスト名を拒否し、一部の無効な名前を受け入れました。そのため、インターネット上のホスト名を解決できませんでした。この問題を修正するために、res hnok などの DNS 名検証機能が、ユーザーの期待と仕様により詳細に一致するように調整されました。その結果、hostname-.example.com 形式のホスト名は、DNS に存在する場合は正常に解決できるようになりました。

(BZ#1039304)

特定の IBM 文字セットから変換するときに iconv がハングしなくなりました。

以前は、IBM930、IBM933、IBM935、IBM937、および IBM393 文字セットの glibc コンバーターはエラーを返し、無効な冗長なシフトシーケンスに遭遇すると、次の入力文字に進むことができませんでした。そのため、-c オプションを指定して iconv ツールを使用してこれらの文字セットから変換すると、冗長なシフトシーケンスの最初の発生を超えて進捗できないため、ツールが応答しなくなっていました。コンバーターは、これらのシーケンスを受け入れ、正しく続行されるように変更されました。その結果、上記の変換が可能になりました。

(BZ#1427734)

iconv は、IBM273 と ISO-8859-1 文字セットの間で変換できます。

以前は、IBM273 文字セットの glibc 実装が ISO-8859-1 文字セットと同等ではありませんでした。Unicode 文字 MACRON の表現がありませんでした。代わりに、MACRON と同じ視覚的表現を持つ OVERLINE Unicode 文字を表すために対応するバイトを使用していました。その結果、glibc が提供する iconv ツールを使用して、OVERLINE 文字を含む IBM273 テキストを ISO-8859-1 に変換するか、または MACRON 文字を含む ISO-8859-1 テキストを IBM273 に変換すると、変換中にエラーが発生しました。このバグを修正するために、IBM273 文字セットは OVERLINE 表現を MACRON に置き換えることで、ISO-8859-1 文字セットと同等になりました。その結果、両方の文字セットが MACRON Unicode 文字を使用するようになり、一方から別の文字への変換でエラーが発生しなくなりました。

(BZ#1591268)

getifaddrs 呼び出しがアプリケーションを予期せず終了しなくなる

以前は、インターフェイスが同時にカーネルで変更された場合には、glibc ライブラリーの getifaddrs 関数によって生成されたネットワークインターフェイスの一覧にインターフェイス名がない可能性がありました。その結果、このような状況では、getifaddrs を使用するアプリケーションが予期せず終了する可能性があります。これは修正され、getifaddrs はリストがカーネルの状態と同じであることを確認するようになりました。その結果、上記の予期しない終了は発生しません。

(BZ#1472832)

暗黙的な作業の前に明示的なターゲットを含む Makefile

以前のリリースでは、Makefile での暗黙的な (パターン) および明示的なターゲットの組み合わせが非推奨になりました。バージョン 3.82 に更新した後、make ビルドツールが混合ターゲットのエラーを返しました。そのため、混合ターゲットを含むレガシー Makefile を使用することはできませんでした。今回の更新により、make は暗黙的なターゲットの前に明示的なターゲットが一覧表示される状況を正しく解析できるようになりました。その結果、特定のレガシー Makefile を修正せずに再度使用できるようになりました。ただし、明示的なターゲットの前に暗黙的なターゲットを使用するとエラーが発生します。

Makefile で明示的なターゲットと暗黙のターゲットを混在させるのは非推奨であり、新しい Makefile には追加し ない でください。

(BZ#1582545)

PCP が、大規模システムですべてのプロセス詳細を報告するようになりました。

以前は、Performance Co-Pilot (PCP)ツールキットは、非常に大きなシステムで特定のプロセスの詳細を報告できませんでした。プロセス詳細ファイルを読み取るコードは、最初の 1024 バイトだけでなく、任意の長さのデータを読み取ることができるように変更されました。その結果、上記の PCP エラーが発生しなくなりました。

(BZ#1600262)

特定の実行可能ファイルで strip がクラッシュしなくなる

以前は、strip ツールには、実行ファイル構造に関する不明な想定が含まれていました。その結果、特定の実行可能ファイルを削除しようとすると、予期せず strip を終了する可能性があります。この問題が発生しなくなり、strip が正しく機能するように、構造に関する仮定が変更されました。

(BZ#1644632)

libdb による CPU 消費の最適化

以前の libdb データベースの更新により、trickle スレッドにおける CPU 消費が過剰になっていました。今回の更新で、CPU 使用率が最適化されました。

(BZ#1608749)

passwd --stdin は、パスワードの長さを 79 文字に制限しなくなりました。

--stdin オプションを指定して passwd コマンドを使用してパスワードを変更すると、パスワードの長さは 79 文字に制限されていました。そのため、標準入力で 79 文字を超えるパスワードを入力すると、最初の 79 文字のみが受け入れられ、警告が表示されませんでした。今回の更新で、パスワードの使用を許可するサイズを Pluggable Authentication Module (PAM)で定義されたサイズに調整するように passwd が修正されました。その結果、passwd --stdin コマンドは 79 文字を超えるパスワードを受け入れるようになりましたが、PAM_MAX_RESP_SIZE - 1 文字より長くなるようになりました。この制限を超えると、passwd は標準エラー出力にエラーを報告し、終了コード 1 で終了します。

(BZ#1276570)

fixfiles が誤って失敗しなくなりました。

以前は、/etc/selinux/fixfiles_exclude_dirs ファイルに少なくとも 1 つのエントリーが含まれており、/etc/selinux/targeted/contexts/files/file_contexts.local ファイルが存在しない場合、fixfiles スクリプトは失敗しました。今回の更新で、/etc/selinux/targeted/contexts/files/file_contexts.local の存在の要件が削除され、上記のシナリオで fixfiles が正常に機能するようになりました。

(BZ#1647714)