ゲームの「10年プレイしない」実績解除のために時間をすっ飛ばした結果「2038年問題」にぶつかってSteamのフォント表示が大混乱

GIGAZINE



PCゲームのダウンロード販売・ストリーミングプレイのプラットフォームであるSteamで、表示されるテキストが突然ランダムなフォントになるという報告が話題になりました。その報告をしたユーザーによると、フォントがランダムに変化した原因には「2038年問題」が影響していたとのことで、その経緯と結果に注目が集まっています。

The stupidest shit just happened to me: @Steam started picking a random font I had in my user fonts dir: FG Virgil, the @excalidraw font. I have no idea why, but this is wild… pic.twitter.com/IDRqRwFs1s

— bµg (@insouris)


Investigating why Steam started picking a random font
http://blog.pkh.me/p/35-investigating-why-steam-started-picking-a-random-font.html

Investigating why Steam started picking a random font | Hacker News
https://news.ycombinator.com/item?id=33673517

グラフィックやアートに関連したテクノロジーに詳しいbµg氏は自身のブログで、Steamが突然ユーザーディレクトリ内にあるランダムなフォントを選択しだしたバグについて報告し、その原因を特定したと解説しています。bµg氏は当初Steam自体の不具合かと思っていたものの、他のユーザーから同様の報告を聞かなかったことから、自身の環境が問題と推測して調査を行ったとのこと。


bµgによると、まず重要なのは、bµg氏がThe Stanley Parableというゲームにハマっている点にあったそうです。The Stanley Parableはプレイヤーの選択によりストーリーがさまざまに分岐していくアドベンチャーゲームで、プレイヤーがナレーションに従うか自由に行動するかによって、10以上のエンディングやイースターエッグなどにたどり着きます。


bµg氏はThe Stanley Parableを楽しむ中で、「5年間全くプレイしない」という実績を新たに解除しようと試みました。その結果を直ちに得るために、時刻情報を取得するNTPを無効にし、システム内の時間を2030年に設定することで、bµg氏はThe Stanley Parableのレアな実績を獲得したそうです。

bµg氏はさらに、2022年にリリースされた「The Stanley Parable: Ultra Deluxe」という新機能が追加された拡張版でも同様のプレイを行いました。「Ultra Deluxe」では、この「全くプレイしない」という実績の条件が5年から10年に期間が長くなっていたため、bµg氏は再びNTPを無効にしてシステム内時間を変更しました。この時、2022年に10年を追加した2032年ではなく、キリが良い数字ということで2040年に設定しています。bµg氏はこの設定により、Steamのアクセス時間が2040年に変更されたことで、「2038年問題」にぶち当たってSteam上でのフォントのバグが発生したと指摘しています。

2038年問題とは、UNIX時間のオーバーフローに伴ってプログラムが誤動作するというものですが、既にほとんどのプログラムで解決済みとされています。その一方で2038年問題を引き起こすコードは複数の場所に残っているとも指摘されており、そのコードをコピーしたプログラムでは2038年問題が発生してしまいます。

2038年問題を再発させるコードが多数の場所にコピーされてしまっている – GIGAZINE


bµg氏はまず、コンソール上に表示された以下のようなエラーを発見しました。このエラーには「EOVERFLOW」と表示されており、どこかでオーバーフローを引き起こしていることが分かります。


オーバーフローを引き起こした原因として、bµg氏はアクセス時間が2040年と記録されていた点にあることを突き止めました。bµg氏はこのバグを「不具合ではなく自傷行為のバグでした」とコメントすると同時に、「2038年の到来がとても楽しみです」と語っています。


bµg氏の報告はHacker Newsでも「2038年が興味深い年になることは間違いない」と2038年問題が話題になっています。あるユーザーは「FINAL FANTASY VII」のリバースエンジニアリングを行った際に「現在の日付が2038年より前かどうかを実際にチェックするコードに出くわしました。アクセス時間が2038年を超えていた場合、プログラムの実行が拒否されるようになっていました」とコメントしており、「2038年には多くの古いソフトウェアが同様に機能停止になる問題を抱えています」と指摘しています。

他のユーザーも「UNIXは表示形式だけではなく将来に向けたスケジュールを計算するため、何かで設定した日時が2038年に近づくほど、多くのプログラムが機能不全になります」と述べていたり、同様にプログラム上の問題が懸念された「2000年問題」と比較して、より複雑で根本的な問題になると議論されていたりと、目の前に迫る2038年問題に関して改めて注目が集まっています。

この記事のタイトルとURLをコピーする

Source