12.7. 컴파일러 및 개발 도구
- glibc 종료 함수가 더 이상 동시 호출에 충돌하지 않음
이번 업데이트 이전에는 다중 스레드 애플리케이션에서 glibc
종료함수 및 동시stdio.h스트림 작업에 대한 동시 호출이 동기화되지 않았습니다. 이로 인해 애플리케이션이 예기치 않게 종료되거나 데이터 손상이 발생할 수 있었습니다. 이번 업데이트를 통해exit및quick_exit함수는stdio.h스트림 플러시를 동기화하고 하나의 종료 호출만 계속 진행할 수 있습니다. 결과적으로 이 시나리오에서 애플리케이션이 더 이상 충돌하지 않으며 전체 안정성이 향상되었습니다.getchar와 같이stdio.h스트림에서 읽기 작업을 차단하거나flockfile을 사용하여 스트림을 잠그는 애플리케이션은 읽기 작업이 완료되거나 잠금이 해제될 때까지 종료할 수 없습니다. 이 동작은 POSIX 표준에 필요합니다.Jira:RHEL-111117[1]
- 누락된 세마포를 열 때
sem_open에서 초기화되지 않은 결과가 수정됨 이번 업데이트 이전에는 존재하지 않고
O_CREAT플래그를 지정하지 않고 이름이 지정된 세마포에 대해sem_open함수를 호출하면 정의된 오류 표시기 대신 초기화되지 않은 값이 반환될 수 있습니다.그 결과 errno가 의미 있는 값으로 설정되지 않았기 때문에 유효하지 않은 세마포어 처리를 사용하고 오류를 잘못 해석하는 등 영향을 받는 애플리케이션이 정의되지 않은 동작을 관찰했습니다.
이번 릴리스에서는
SEM를 명시적으로 반환하고 존재하지 않는 세마포에 대해 호출되고_FAILEDO_CREAT플래그가 지정되지 않은 경우errno를ENOENT로 설정합니다.결과적으로 애플리케이션은 이 오류 상태를 안정적으로 감지하고 누락된 세마포마포를 예측 가능하고 표준을 준수하는 방식으로 처리할 수 있습니다.
Jira:RHEL-119392[1]
- 입력 스트림 및 공유 파일 설명자에 대해 수정된
glibcstdio 플러시 문제 이번 업데이트 이전에는 입력 스트림을 플러시할 때 glibc 표준 I/O 구현이 POSIX를 완전히 준수하지 않았습니다. 이로 인해
ungetc후fflush가 입력 스트림,fflush(NULL)라고 할 때 일관성 없는 동작이 잘못 처리되었으며, 공유 파일 설명자 또는 특수 문자 장치에서fclose가 작동할 때 잘못된 파일 오프셋이 발생했습니다.결과적으로 애플리케이션은 예기치 않은 입력 스트림 상태, 잘못된 기본 파일 위치, 메모리 매핑된 입력 파일에
fseek및fflush를 사용할 때 파일 위치 오류를 확인할 수 있으며 이로 인해 잘못된 데이터 처리 버그가 발생할 수 있습니다.이번 릴리스에서는 fflush가
ungetc이후 및fflush로 호출되는 경우fflush가 POSIX 호환 방식으로 입력 스트림을 처리하도록glibcstdio 라이브러리가 수정되었습니다. 또한fclose는 공유 파일 설명자의 기본 파일 오프셋을 업데이트하고 특수 문자 장치에서 올바르게 작동하며 메모리 매핑된 입력 파일에서fseek및fflush에 대한 파일 위치 지정 논리가 수정되었습니다.결과적으로 입력 처리, 공유 파일 설명자 사용 또는 메모리 매핑된 입력 파일을 위해
stdio에 의존하는 애플리케이션이 업데이트 후 예측 가능하고 올바르게 작동합니다.Jira:RHEL-119434[1]