OpenOffice가 화요일에는 인쇄하지 못한 버그(2009)

2 weeks ago 22
  • Ubuntu의 OpenOffice에서 발생한 인쇄 실패는 특정 요일에만 재현되는 이례적인 버그였음
  • PostScript에 기록된 %%CreationDate: (Tue...)를 *NIX 유틸리티 file이 Erlang JAM 파일로 오인
  • Erlang JAM 탐지 패턴이 공백을 이스케이프하지 않아 Tue만으로 일치했고, PostScript 패턴보다 먼저 적용
  • OpenOffice 재설치는 목요일에 문제를 해결한 듯 보였지만, 2주 뒤 화요일에 인쇄가 다시 실패함
  • 1,600개가 넘는 파일 형식을 판별하는 환경에서는 잘못된 패턴과 매칭 순서가 결합해 예상하기 어려운 오탐(false positive)을 일으킬 수 있음

화요일에만 발생한 인쇄 실패

  • 다른 애플리케이션에서는 정상적으로 인쇄돼 처음에는 OpenOffice 자체 버그로 여겨졌으며, 문제가 간헐적으로 나타난다는 보고도 있었음
  • 한 사용자는 Ubuntu에서 OpenOffice를 완전히 제거한 뒤 재설치해 문제를 해결했다고 목요일에 보고함
    • 2주 뒤 화요일에는 같은 해결책이 더 이상 효과가 없었음
    • 약 4개월 뒤 Ubuntu 개발자의 아내가 OpenOffice에서 화요일마다 인쇄할 수 없다고 알려 요일과의 연관성이 드러남

file의 잘못된 형식 판별

  • 원인은 패턴으로 파일 형식을 감지하는 *NIX 유틸리티 file 에 있었음
  • OpenOffice가 PostScript 파일에 생성 날짜를 기록하면 화요일에는 다음과 같은 형태가 됨
%%CreationDate: (Tue MMM D hh:mm:...)
  • Erlang JAM 파일을 탐지하던 잘못된 패턴은 다음과 같았음
4 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2
  • 공백을 이스케이프한 올바른 패턴은 다음과 같아야 했음
4 string Tue\ Jan\ 22\ 14:32:44\ MET\ 1991 Erlang JAM file - version 4.2
  • 이 오류로 PostScript 안의 Tue가 Erlang JAM 파일로 인식됐고, 해당 파일이 프린터로 전달되지 않은 것으로 추정됨
  • file은 1,600개가 넘는 파일 형식을 매칭하며, 이 사례에서는 Erlang JAM 패턴이 PostScript 패턴보다 먼저 일치해 오탐이 발생함
  • 자세한 과정은 ReferenceBug Report에서 확인할 수 있음
Read Entire Article