'Overflow'에 해당되는 글 1건

  1. 2007.08.29 코드 복사가 불러온 재앙 - 아리안 5호 폭발 사건.
Study- MSC/Computer2007. 8. 29. 01:51

  타입 캐스팅 관련 부분을 읽고 있다가 쉬어가는 식으로 아리안 5호의 폭발 사고 이야기가 있길래, 인터넷에서 찾아 본 내용이다.

 

  1996년 4월 프랑스에서 발생한 아리안(Ariane) 5호의 폭발사고는 소프트웨어 안에 숨어있는 버그의 위력을 실감할 수 있는 사례다. 5억 달러에 달하는 거금이 투입된 유럽의 상업용 우주선 아리안 5호는 발사된 지 불과 40여초 만에 공중에서 폭발하여 수많은 사람들을 망연자실하게 만들었다. 당시 사고로 깊은 충격을 받은 유럽 우주기구(Europe Space Agency)와 프랑스 우주연구센터는 즉각 조사팀을 구성해 로켓의 폭발 원인을 찾아내기 위한 정밀조사에 착수했다. 이 같은 정밀조사를 통해 채 한 달도 안 돼 폭발 원인이 드러났다. 5억 달러를 허공에 흩뿌린 충격적인 사고의 원인이 에이다(Ada)로 작성된 소프트웨어 내부에 존재하는 버그로 밝혀졌다. 그 당시 조사팀의 보고 내용이 폭발 사고를 일으킨 소프트웨어가 우주선의 운항과 직접적인 연관성이 없었다고 밝혀져 더 큰 충격을 주기도 했다.
사고는 64비트 숫자 값을 16비트 정수로 변환하는 과정에서 일어났다. 문제가 된 모듈은 보다 작은 수에 한해서 정상적으로 작동하는데 그 보다 큰 수가 입력되는 바람에 수치 오버플로우(numeric overflow)가 발생하였다.
이 오버플로우는 우주선을 운행하는 중앙 소프트웨어에게 터무니없이 잘못 계산된 고도가 전달되도록 만들었고, 그 이상한 값을 읽고 당황한 소프트웨어는 눈 깜빡할 사이에 자동 폭발 장치를 작동시켰다.


출처 : http://blog.naver.com/hippo1969?Redirect=Log&logNo=20035014367

 

  어처구니 없는 사고가 아닐 수 없다. 참고로 말하자면 이 부분은 프로그래머가 이 부분의 코드를 작성한 것이 아니라, 아리안 4호의 동일 기능 부분의 코드를 그대로 복하사면서 생긴 사고라고 한다. 무조건적인 코드 복사의 남발이 부른 결과인 것이다. 같은 기능이라도, 로켓의 스펙이 달라졌는데 좀 더 체크를 했으면 이런 어이없는 사고는 발생하지 않았을 것이다.

Posted by 머리