Когда календарь стал системной ошибкой

В электронном устройстве дата — не просто надпись на экране. Прошивка, то есть встроенная программа, должна переводить показания часов в календарные числа: год, месяц и день. Ошибка в таком расчёте может остановить не только календарь, но и другие задачи, которые выполняет плеер.

Что пошло не так в Zune 30

При переходе с 31 декабря на 1 января программа обработки даты неверно разобрала последний день високосного года — 366-й день. Вместо того чтобы завершить вычисление и перейти к новому году, она застряла в повторяющемся цикле. Процессор продолжал выполнять одну и ту же операцию, а плеер переставал нормально реагировать.

Это пример ошибки на границе календарного цикла: обычные даты годами проходят проверку, а особый случай проявляется только при редком сочетании условий. Високосный год добавляет календарю один день, и программа должна правильно обработать его при смене года. Если в логике перехода не предусмотрен такой сценарий, сбой возникает сразу у устройств, которые используют эту версию кода.

Почему помогло ожидание

Перезагрузка не обязательно устраняет причину: после запуска часы снова доходят до проблемного участка, и программа может повторно зависнуть. Когда аккумулятор разряжался, устройство выключалось полностью. К моменту следующего включения дата уже перешла на 1 января, и ошибочный переход больше не запускался.

Так календарная ошибка превратилась в проблему питания: чтобы оживить плеер, владельцам приходилось ждать, пока он сам выключится. Устройство не было физически сломано — оно просто не могло пройти одну редкую дату в собственном программном коде.