6.9. コンパイラーおよび開発ツール
システムアップグレードの中断後に ldconfig がクラッシュしなくなりました
以前は、システムアップグレードの中断後、/usr/lib64 ディレクトリーに残された不完全な共有オブジェクトを処理する際に、ldconfig ユーティリティーがセグメンテーション違反で予期せず終了していました。この更新により、ldconfig はシステムのアップグレード中に書き込まれた一時ファイルを無視するようになりました。その結果、システムアップグレードの中断後に ldconfig がクラッシュしなくなりました。
依存関係のサイクルに関係する共有オブジェクトに dlclose を使用するアプリケーションとの glibc 互換性が向上しました
以前は、glibc の dlclose 関数を使用して依存関係サイクル内の共有オブジェクトをアンロードすると、そのオブジェクトの ELF デストラクターが、他のすべてのオブジェクトがアンロードされるまで呼び出されない場合がありました。ELF デストラクターの実行が遅くなることで、アプリケーションでクラッシュやその他のエラーが発生しました。これは、最初にアンロードした共有オブジェクトの依存関係がすでに初期化解除されていることが原因でした。
この更新により、glibc が修正され、他の ELF デストラクターを起動する前に、アンロードする直近のオブジェクトの ELF デストラクターを呼び出すようになりました。その結果、依存関係サイクルに関係する共有オブジェクトに dlclose を使用するアプリケーションとの互換性が向上し、クラッシュが発生しなくなりました。
Jira:RHEL-10481[1]
glibc ワイド文字書き込みパフォーマンスの向上
以前は、glibc のワイド stdio ストリーム実装では、デフォルトのバッファーサイズがワイド文字の書き込み操作に十分な大きさであるとは扱われず、代わりに 16 バイトのフォールバックバッファーが使用されていたため、パフォーマンスに悪影響がありました。この更新により、バッファー管理が修正され、書き込みバッファー全体が使用されるようになりました。その結果、glibc ワイド文字書き込みパフォーマンスが向上します。
Jira:RHEL-19824[1]
glibc ダイナミックリンカーは、カスタム malloc 実装からの TLS アクセスを使用するアプリケーションによる再入可能 malloc 呼び出しを防止します。
一部のアプリケーションでは、初期実行 TLS の代わりにグローバル動的スレッドローカルストレージ (TLS) を使用するカスタム malloc 動的メモリー割り当て実装が提供されます。以前は、グローバル動的 TLS を使用するバンドルされた malloc 呼び出しを持つアプリケーションでは、アプリケーションの malloc サブシステムへの再入呼び出しが発生する可能性がありました。その結果、スタックの枯渇または内部データ構造の予期しない状態により、アプリケーションの malloc 呼び出しがクラッシュしました。
RHBA-2024:5834 アドバイザリーのリリースにより、glibc ダイナミックリンカーはカスタム malloc 実装からの TLS アクセスを検出するようになりました。malloc 呼び出し中に TLS アクセスが検出されると、TLS 処理中のそれ以降の呼び出しはスキップされ、再入可能な malloc 呼び出しは防止されます。