2012-07-30 3 views
2

나는 휴면 오류에 대해 생각해 보았고 모범을 알 수 없습니다. 정의에 따라 휴면 오류는 오류를 일으키지 않으므로 오류를 일으키지 않는 오류 (코드의 결함)입니다. 아무도 나에게 모범을 줄 수 있습니까? 내 마음을 넘은 유일한 건 버그 코드가 아니었다. 감사합니다.휴면 오류의 예는 무엇입니까?

답변

4

휴면 오류는 사람이 생각하는 것보다 훨씬 더 흔합니다. 대부분의 프로그래머들은 "내가 생각한 바를 어떻게 생각 하는가?"라는 코드가 잘못된 행동을 나타내지는 않았을지라도 어떻게 이 제대로 돌아갈 수 있었 을까? 고전적인 경우는 잘못된 코너 케이스 처리입니다. 실패한 메모리 할당 :

char *foo = malloc(42); 
strcpy(foo, "BarBaz"); 

위의 코드는 대부분의 상황에서 정상적으로 작동하며 통과 테스트가 정상적으로 작동합니다. 그러나 메모리 고갈로 인해 malloc이 실패하면 비참하게 실패합니다. 잘못은 있지만 휴면 상태입니다.

+0

감사합니다. 메모리와 관련이없는 다른 예는 무엇입니까? – user970696

2

휴면 결함은 시스템에 올바른 입력 [편집 : 또는 상황]을 보낼 때까지 공개되지 않는 것입니다.

대표적인 예는 Therac-25입니다. 기술자가 시스템 사용에 "유창하게"될 때까지 입력시 발생할 수있는 키 조합으로 인해 발생하는 경쟁 조건은 발생하지 않았습니다. 그들은 일반적인 치료를위한 중요한 스트로크를 암기했는데, 이는 그들이 매우 빨리 환자에게 진입 할 수 있음을 의미합니다.

내 마음에 와서 몇 가지 다른 것들

: 2000 년 주변에 올 때까지

  • Y2K 버그는 모든 휴면 잘못했다가 ...
  • 포토샵 7 여전히 yet it thinks my 1TB disks are full, 내 윈도우 7 시스템에서 확인을 실행 . 설명은 여유 공간을 유지하는 데 사용되는 데이터 유형이 이러한 많은 양의 여유 공간을 차지하지 않도록 설계되었으므로 여유 공간이 부족하여 여유 공간이 부족한 것처럼 보입니다.
  • TFTP (블록 카운터는 16 비트에서 65535로만 이동할 수 있음)로 32MB보다 큰 파일을 전송하면 많은 구형 구현에서 휴면 버그가 발견 될 수 있습니다.

예제의 마지막 세트에서 이러한 시스템을 이러한 시스템을 지원하도록 요구하는 사양이 없으므로 실제 오류가 아니라고 주장 할 수 있습니다. 그러나 그것은 사양의 완성도에 도달합니다.