DOOM chạy liên tục 2,5 năm trên PDA rồi bị crash
DOOM chạy liên tục 2,5 năm trên PDA rồi bị crash vì lỗi “gametic”
Một người dùng tên Minki từ cộng đồng LenOwO đã thử nghiệm để DOOM (qua bản WinDOOM trên Windows Mobile) chạy liên tục trên chiếc PDA ASUS MyPal A620 suốt khoảng 2,5 năm nhờ bộ UPS tự chế. Sau khoảng thời gian dài, trò chơi cuối cùng đã bị crash, hiện tượng này được cho là do lỗi tràn bộ đếm thời gian nội bộ “gametic”.
Nguyên nhân: tràn biến “gametic”
Trong engine DOOM, biến gametic được dùng để theo dõi thời gian trò chơi, nó được tăng 35 lần mỗi giây (35 Hz).
Biến này được lưu dưới dạng số nguyên có dấu 32-bit, nên khi đạt giá trị tối đa 2,147,483,647, nó sẽ tràn (overflow).
Khi tràn, trò chơi không xử lý được tình huống này và dẫn đến crash — điều này đã được biết từ thời DOOM ra mắt.
Với tốc độ 35 ticks mỗi giây, thời gian để tràn rơi vào khoảng 1,95 năm — nếu thiết bị điều chỉnh tốc độ tick (ví dụ 30 Hz) thì khoảng thời gian tới ~2,26 năm, tương ứng với thí nghiệm 2,5 năm.
Ý nghĩa & bài học
Lỗi này đã tồn tại trong DOOM từ lâu, nhưng rất hiếm khi có người để game chạy suốt nhiều năm để gặp phải nó.
Việc thử nghiệm này vừa thú vị vừa có tính khoa học, cho thấy rằng các lỗi phần mềm cổ điển vẫn có thể xuất hiện trong điều kiện cực đoan.
Nó cũng là minh chứng về sự bền bỉ của phần cứng cũ — một PDA từ năm 2003 vẫn có thể giữ DOOM chạy trong thời gian dài.