GN⁺ 2024-09-30 | parent | ★ favorite | on: 64비트 time_t 전환의 위험성(blogs.gentoo.org)
Hacker News 의견
  • Gentoo는 패키지를 설치하지 않고 빌드하는 옵션이 부족함

    • Gentoo는 패키지 빌드와 설치가 한 단계로 이루어짐
    • ABI 변경 시 업데이트 중에 시스템이 쉽게 깨질 수 있음
    • 64비트 time_t 문제는 널리 알려진 ABI 변경의 예시임
  • .so 버전 관리를 통해 ABI 변경을 처리하는 방법

    • .so 파일은 버전 번호를 포함함
    • 패키지 자체가 내부적으로 버전 번호를 관리함
    • 64비트 time_t를 지원하려면 상속된 ABI를 제어할 수 있는 추가 구성 요소가 필요함
  • Mac OS X에서 off_tino_t를 처리한 방법

    • 기존 호출과 구조체는 그대로 유지됨
    • 새로운 호출과 타입에 64 접미사가 추가됨
    • 빌드 시 컴파일된 바이너리가 실행될 최소 OS 버전을 지정할 수 있음
  • Debian은 64비트 time_t로 전환하는 데 어려움을 겪었음

    • 소스 기반 배포판은 더 어려운 전환 과정을 겪음
  • 32비트 유닉스 시스템에서 time_t를 unsigned 32비트로 대체한 경험

    • 2038년 이후 68년을 더 사용할 수 있게 됨
    • 유닉스 에포크 이전의 날짜를 표현할 수 없음
  • FreeBSD에서 amd64 포트를 할 때 64비트 time_t를 도입한 경험

    • 32비트 함수 인자가 64비트로 자동 변환됨
    • 초기부터 64비트 time_t를 사용하여 문제를 피함
    • tzcode가 64비트 안전하지 않아서 일부 문제를 겪음
  • BSD 매뉴얼 페이지의 "Bugs" 섹션에 있는 농담

    • "You can tune a file system, but you can't tune a fish."
  • 소스 기반 배포판 대신 Debian 같은 비소스 기반 배포판으로 전환하고 싶다는 의견

  • 32비트 time_t와 64비트 time_t의 구조체 오프셋 차이

    • 64비트 타입에서는 b가 64비트 정렬이 필요하여 패딩이 추가됨
  • C에서 타입 별칭이 나중에 변경될 가능성을 제공한다고 생각했지만, 실제로는 그렇지 않음

  • 문제를 빨리 해결하는 것이 좋다는 의견

    • OpenBSD는 모든 아키텍처에서 64비트 time_t를 사용함