본문 바로가기

예전글 목록

마이크로소프트의 준 MP3의 버그는 아마도..


원문: http://www.crunchgear.com/2008/12/31/the-day-the-zunes-stood-still-update/

2008년의 12월 31일을 기점으로 2006년 모델인 Zune 30GB 디바이스가 부팅중 로그 화면에서 멈추는 현상이 전체적으로 발생하게 됩니다. MS측은 부랴부랴 원인을 파악하여 다음과 같은 이유을 설명하네요..


Early this morning we were alerted by our customers that there was a widespread issue affecting our 2006 model Zune 30GB devices (a large number of which are still actively being used). The technical team jumped on the problem immediately and isolated the issue: a bug in the internal clock driver related to the way the device handles a leap year. That being the case, the issue should be resolved over the next 24 hours as the time change moves to January 1, 2009. We expect the internal clock on the Zune 30GB devices will automatically reset tomorrow (noon, GMT). By tomorrow you should allow the battery to fully run out of power before the unit can restart successfully then simply ensure that your device is recharged, then turn it back on. If you’re a Zune Pass subscriber, you may need to sync your device with your PC to refresh the rights to the subscription content you have downloaded to your device.

즉 버그의 원인은 내부 시계(클럭) 드라이버와 관계된 버그라고 하네요. 버그 패치는 그냥 24시간이 지나면 다시 말해서 2009년 1월 1일의 자정이 지나면 버그는 없어질거라고 합니다. 해외 블로그에서는 Y2K와 같은 버그라고 하면서 ~~ 난리였네요.. 어쨌든 개인적으로 아마도 Software의 버그라고 생각하고 있었는데.. 다음과 같은 내용을 찾게 되었습니다. 100% 추측에 관한 내용임을 밝힙니다.

원문: http://www.crunchgear.com/2008/12/31/zune-bug-explained-in-detail/

시간 관련 Software과 다음과 같이 비슷하게 구현이 되어 있다면 아마도 이런 현상이 100% 발생하겠네요..

year = ORIGINYEAR; /* = 1980 */

while (days > 365)
{
    if (IsLeapYear(year))
    {
        if (days > 366)
        {
            days -= 366;
            year += 1;
        }
    }
    else
    {
        days -= 365;
        year += 1;
    }


==> 즉.. IsLeapYear(year)를 만족하는 경우 days의 값이 366(365+1)이라면 조건문의 if(day > 366)의 예외인 else과 없으므로 1일이 지날때까지는 해당 Loop를 반복하겠네요.. 즉 다운된것처럼 보이겠죠. 아마도. 물론 전부 가정에서 출발한 것이네요. 
이를 계기로 다시 한번 Safe한 Software 개발과 다양한 Test 조건을 수반한 개발을 필요성을 느끼게 됩니다. 언론에서 애기하듯이 Apple의 MP3을 대항에서 야심차게 내 놓은 June이 저러한 버그는 치명적인 제품의 인식을 나쁘게 할 수 있을테니깐요..

더 재미 있는 것은 만약에 정말 그러하다면 4년후에도 똑같은 현상이 발생? ㅎㅎ