Go의 메모리 안전성: 스레드 안전성 결여로 인한 위험
이 글은 Go에서 메모리 안전성에 대한 일반적인 이해에 이의를 제기합니다. 저자는 단순한 메모리 안전성(예: 범위 밖 접근 방지)은 강력한 프로그램에 불충분하며, 진정한 안전성은 정의되지 않은 동작(UB)을 피하는 데 있다고 주장합니다. Go 프로그램 예시를 통해 `unsafe` 연산을 사용하지 않더라도 데이터 경쟁이 UB와 충돌을 일으킬 수 있음을 보여줍니다. 저자는 Go의 데이터 경쟁 처리가 충분히 엄격하지 않으며, 메모리 안전성 주장과 모순되어 Go 프로그램을 보안 취약성 위험에 노출시킨다고 주장합니다. 결론적으로 언어의 안전성은 이원적이지 않으며, 언어가 제공하는 안전성 보장과 트레이드오프를 이해하는 것이 중요하다고 강조합니다.
더 보기