- 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 패턴보다 먼저 일치해 오탐이 발생함
- 자세한 과정은 Reference와 Bug Report에서 확인할 수 있음