Doom crash after 2.5 years of real-world runtime confirmed on real hardware 🔥 Горячее 💬 Длинная дискуссия
Два с половиной года назад я начал свой самый длинный эксперимент с программным обеспечением в реальных условиях. Прочитав статью о работе движка DOOM, я заметил, что переменная для отслеживания демо-записи продолжала увеличиваться даже после начала следующей демки. Эта переменная сравнивалась с другой, хранящей предыдущее значение. Проблема в том, что каждое увеличение медленно приближало переменную к переполнению. В обычных условиях это никогда бы не произошло, но мне стало интересно, сколько времени потребуется для краха игры.
Я провёл расчёты и получил примерно 2,5 года работы до переполнения. Чтобы проверить это на практике, я запустил DOOM на КПК с питанием от самодельного ИБП на 18650, подключённого к роутеру. Система работала всё это время, и я почти забыл о ней.
Сегодня игра наконец crashed — всего через несколько часов после отметки в 2,5 года. Переменная переполнилась, что подтвердило теорию.
Комментарии (178)
- В игре Crash Bandicoot 3 используется 32-битный счётчик времени, который переполняется через ~2.26 года, вызывая сбои.
- Аналогичная проблема переполнения счётчика обсуждается в контексте DOOM, Windows NT и других систем.
- Переполнение знакового целого в C является неопределённым поведением, что может приводить к краху программы.
- Упоминаются другие примеры из игр (Final Fantasy 9) и систем, где переполнение таймеров вызывает проблемы.
- Обсуждаются технические детали, такие как использование signed vs unsigned integer для счётчиков.
- Пользователи шутят о грядущих проблемах в 2038 году из-за переполнения времени Unix.
- Высказывается уважение к стабильности и инженерному качеству кода старых игр, несмотря на подобные баги.
An IRC-Enabled Lawn Mower (2021)
В декабре 2020-го я прикрутил IRC-сервер к газонокосилке. Почему? Сломавшийся мотор дал повод полезть в карбюратор, а друзья в Undernet начали шутить: «Привяжи к ней Raspberry Pi и свяжи с EFnet!». Шутка не умерла за пять дней, и я решился.
Что такое IRC
Текстовый чат 1988 года, до сих пор жив. В 90-х через Undernet я познакомился с программистами по всему миру и сам стал разработчиком.
Как подключиться
Сервер lawnmower.* работает на Pi, прикреплённой к косилке.
Адрес: lawnmower.undernet.org:6667
Канал: #lawn
Комментарии (20)
- Пользователи восторженно обсуждают проект «газонокосилка с Raspberry Pi и IRC-сервером», признавая его абсурдность и притягательность.
- Некоторые мечтали увидеть именно IRC-сервер на роботе-косилке, а не просто прикол; ссылки на openmower.de и idlerpg.net подогрели фантазии.
- Всплыла ностальгия по раннему интернету и Undernet, где люди знакомились по всему миру.
- Участники спорят, можно ли запустить Doom или IRC-клиент на современных ARM-микроконтроллерах косилок; китайские бренды считаются лёгкой добычей для хакеров.
- Вопрос «А где хранится форель?» стал внутренней шуткой треда.
- IRC-2021 жив (libera.chat) и всё ещё считается лучшим инструментом группового чата, в отличие от «IRC-as-a-service» вроде Slack.