Zune MP3 플레이어의 버그

  • JongMan
    JongMan

    2009년 1월 1일을 기점으로 전세계 모든 Zune MP3 플레이어 (MS 에서 만든 MP3P 입니다 ^^) 30GB 모델이, 부팅시 다운이 되어 버린다고 하네요. 그 원인은 다름아니라 1980년 1월 1일 0시부터 경과한 초수 (timestamp) 를 연/월/일로 변경하는 과정에 들어간 버그 때문이라고 하는데, 그 코드가 다음과 같네요.

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

    어디에 버그가 있는지 찾아보시겠어요? ^^

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    15년 전
7개의 댓글이 있습니다.
  • 최치선
    최치선

    days가 366일경우while의 조건은 계속 참인데 days>366은 거짓이라
    무한루프 ㄳ.


    15년 전 link
  • JongMan
    JongMan

    오 역시 간지 ㅋ 따라서 1월 2일이 되면 이 버그는 사라진다고 합니다. ㅋㅋㅋ


    15년 전 link
  • VOCList
    VOCList

    어 근데 잘켜지네ㅇ...라고 치고보니 오늘은 벌써 1/2 ㅠㅠ


    15년 전 link
  • 팽군
    팽군

    days=366 일때 라기보다
    이면서 IsLeapYear (윤년 확인 루틴인듯?) 가 트루 리턴할때만
    발생하는거죠?
    MS도 이런 버그를 -ㅅ-
    MS라서 그런건가요 ㅎㅎ;


    15년 전 link
  • soyoja
    soyoja

    http://www.crunchgear.com/2008/12/31/zune-bug-explained-in-detail/
    저 블로그 글에 언급된 CS101 은 아마 전산과 1학년때 배우는 수업이겠죠?? (우리로 치면 "기초 프로그래밍" 쯤 되려나.. )


    15년 전 link
  • Being
    Being

    처음에 블로그 주인이 int로 돌리면 하세월이다 라고 뻘소리한게 눈에 띄는군요.


    15년 전 link
  • 일루
    일루

    days=366가 되는 윤년에 문제가 일어나는 거라서 2009년 1월 1일이 아니라 2008년 12월 31일에 일어났던 문제입니다. 1월 1일이 되자 이 문제가 해결이 된거죠~


    15년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.