6.8. コンパイラーおよび開発ツール
システムアップグレードの中断後に 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
呼び出しは防止されます。