일부 Win64 컴퓨터에서 AV를 유발할 수있는 스레드 로컬 저장소 관련 문제가 해결되었습니다.

 

C++빌더 10.3.3용 패치를 출시하여 다음 이슈를 해결합니다.

  • RSP-27180 64-bit builds crash with threads
    쓰래드(예: std:thread)를 만들고 사용하는 경우 일부 시스템에서 액세스 바이올레이션을 발생할 수 있습니다.

이 문제는 C/C++ RTL의 어셈블러 코드에서 Win64 32바이트 Shadow space를 설정하여 TLS(thread-local storage) 데이터를 정리할 때 생긴 오류와 HeapFree 메소드의 호출에 대해 Tail-call 최적화를 적용하는 컴파일러의 결합에서 발생합니다.

 

즉, bcc64 컴파일러에 의해 최적화 된 HeapFree 호출자에서 Shadow space를 잘못 설정하는 코드가 적요되어 있었습니다. 다른 윈도우 빌드에 의존하는 일부 머신은 HeapFree가 Shadow space를 사용하기 위해 TLS를 정리할 때 엑세스 바이올레이션이 발생했습니다.

 

이 패치는 호출자가 Shadow space를 올바르게 설정하고 더이상 충돌이 발생하지 않도록 합니다.

 

패치는 다음 링크에서 다운로드 할 수 있습니다. 

관련 글