6.8. 컴파일러 및 개발 도구
ldconfig
가 중단된 시스템 업그레이드 후 더 이상 충돌하지 않음
이전에는 중단된 시스템 업그레이드 후 /usr/lib64
디렉터리에 불완전한 공유 오브젝트를 처리할 때 ldconfig
유틸리티가 세그먼트화 오류를 사용하여 예기치 않게 중지되었습니다. 이번 업데이트를 통해 ldconfig
는 시스템 업그레이드 중에 작성된 임시 파일을 무시합니다. 결과적으로 중단된 시스템 업그레이드 후 ldconfig
가 더 이상 충돌하지 않습니다.
종속성 사이클과 관련된 공유 오브젝트에 dl close
을 사용하는 애플리케이션과 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
하위 시스템에 대한 재entrant 호출이 발생할 수 있었습니다. 그 결과 스택 소진 또는 내부 데이터 구조의 예기치 않은 상태로 인해 애플리케이션 malloc
호출이 충돌했습니다.
RHBA-2024:5834 권고가 릴리스되면서 glibc
동적 링커는 사용자 정의 malloc
구현에서 TLS 액세스를 감지합니다. malloc
호출 중 TLS 액세스가 감지되면 TLS 처리 중 추가 호출을 건너뛰고 malloc
호출을 다시 시작할 수 없습니다.