8.11. 컴파일러 및 개발 도구
ldconfig
가 중단된 시스템 업그레이드 후 더 이상 충돌하지 않음
이전에는 중단된 시스템 업그레이드 후 /usr/lib64
디렉터리에 불완전한 공유 오브젝트를 처리할 때 ldconfig
유틸리티가 분할 오류로 인해 예기치 않게 종료되었습니다. 이번 업데이트를 통해 ldconfig
는 시스템 업그레이드 중에 작성된 임시 파일을 무시합니다. 결과적으로 중단된 시스템 업그레이드 후 ldconfig
가 더 이상 충돌하지 않습니다.
glibc
에서 malloc
arena tuning에 구성된 프로세서 수 사용
이전에는 glibc
에서 malloc
의 최대값 튜닝을 위해 스레드별 CPU 선호도 마스크를 사용했습니다. 결과적으로 스레드 선호도 마스크를 시스템의 CPU의 작은 하위 집합으로 제한하면 성능이 저하될 수 있습니다.
glibc
는 최대 범위 수를 결정하기 위해 구성된 CPU 수를 사용하도록 변경되었습니다. 결과적으로 애플리케이션은 제한된 스레드 CPU 선호도 마스크로 실행되는 경우에도 더 많은 수의 아라스를 사용하고 성능 저하가 더 이상 발생하지 않습니다.
Jira:RHEL-17157[1]
종속성 사이클과 관련된 공유 오브젝트에 dl close
을 사용하는 애플리케이션과 glibc
호환성 개선
이전 버전에서는 glibc
에서 dlclose
함수를 사용하여 종속성 주기에서 공유 오브젝트를 언로드할 때 다른 모든 오브젝트가 언로드되기 전에 해당 오브젝트의 ELF 종료기가 호출되지 않았을 수 있었습니다. 이러한 늦은 ELF 종료자 실행으로 인해 초기 공유 개체의 종속성이 이미 초기화되지 않아 애플리케이션이 충돌 및 기타 오류가 발생했습니다.
이번 업데이트를 통해 glibc
는 다른 ELF 종료자를 실행하기 전에 언로드되는 즉시 객체의 ELF 종료자를 먼저 호출하도록 수정되었습니다. 결과적으로 종속성 주기와 관련된 공유 오브젝트에 대한 dlclose
를 사용하는 애플리케이션과의 호환성이 개선되고 충돌이 더 이상 발생하지 않습니다.
Jira:RHEL-2491[1]
더 이상 디렉토리 실행을 시도하지 않음
이전 버전에서는 실행 파일을 실행하려고 하는 실행 파일이 실제로 실행 중인지 확인하지 않았습니다. 결과적으로 경로에 실행 파일과 이름이 같은 디렉터리가 포함된 경우 대신 디렉터리
를
실행하려고 합니다. 이번 업데이트를 통해 실행 파일을 검색할 때 추가 검사를 수행합니다. 결과적으로 더 이상 디렉터리를 실행하려고 하지 않습니다.
glibc
광범위한 문자 쓰기 성능 개선
이전에는 glibc
의 광범위한 stdio
스트림 구현에서 기본 버퍼 크기를 광범위한 쓰기 작업을 위해 충분히 큰 것으로 취급하지 않았으며 대신 16바이트 대체 버퍼를 사용하여 성능에 부정적인 영향을 미쳤습니다. 이번 업데이트를 통해 버퍼 관리가 수정되고 전체 쓰기 버퍼가 사용됩니다. 그 결과 glibc
광범위한 문자 쓰기 성능이 향상됩니다.
Jira:RHEL-19862[1]
glibc
getaddrinfo
함수가 ncsd
캐시 정보를 올바르게 읽습니다.
이전에는 glibc
getaddrinfo
함수의 버그로 인해 종종 목록 주소 정보 구조에서 빈 요소를 반환했습니다. 이번 업데이트를 통해 ncsd
캐시 데이터를 올바르게 읽고 변환하도록 getaddrinfo
함수가 수정되었으며 결과적으로 올바른 주소 정보를 반환합니다.
종속성 사이클과 관련된 공유 오브젝트에 dl close
을 사용하는 애플리케이션과 glibc
호환성 개선
이전 버전에서는 glibc
에서 dlclose
함수를 사용하여 종속성 주기에서 공유 오브젝트를 언로드할 때 다른 모든 오브젝트가 언로드되기 전에 해당 오브젝트의 ELF 종료기가 호출되지 않았을 수 있었습니다. 이러한 늦은 ELF 종료자 실행으로 인해 초기 공유 개체의 종속성이 이미 초기화되지 않아 애플리케이션이 충돌 및 기타 오류가 발생했습니다.
이번 업데이트를 통해 glibc
는 다른 ELF 종료자를 실행하기 전에 언로드되는 즉시 객체의 ELF 종료자를 먼저 호출하도록 수정되었습니다. 결과적으로 종속성 주기와 관련된 공유 오브젝트에 대한 dlclose
를 사용하는 애플리케이션과의 호환성이 개선되고 충돌이 더 이상 발생하지 않습니다.
gRPCSD가
일관성 없는 캐시 만료 정보로 인해 더 이상 시작되지 않음
이전에는 glibc
Name Service Switch Caching Daemon(nscd
)이 영구 캐시 파일의 일관성 없는 캐시 만료 정보로 인해 시작되지 못했습니다. 이번 업데이트를 통해 ncsd
는 이제 삭제에 대한 타이밍 정보가 일치하지 않는 캐시 항목을 표시하고 이를 건너뜁니다. 결과적으로 ncsd
가 일관성 없는 캐시 만료 정보로 인해 더 이상 시작되지 않습니다.
지속적으로 빠른 glibc
스레드 로컬 스토리지 성능
이전 버전에서는 glibc
동적 링커가 dlopen()
함수를 사용하여 TLS와 공유 오브젝트를 로드한 후 특정 스레드-로컬 스토리지(TLS) 메타데이터를 조정하지 않아 TLS 액세스 속도가 느려졌습니다. 이번 업데이트를 통해 동적 링커는 이제 dlopen()
호출으로 인한 TLS 변경에 대한 TLS 메타데이터를 업데이트합니다. 결과적으로 TLS 액세스가 일관되게 빨라집니다.