|
![]() ![]() ![]() ![]() ![]() | |
昨日、TL上で2038年問題に関する話題が上がっていて、そういえば、2038年問題って、実際に発生するXデーがいつなのかよく分かっていなかったことに気づきました。 2000年問題なら、2000/1/1 0:00:00 という、一般人でも分かりやすい日付時刻に発生する事象でしたが、2038年問題はそんなに分かりやすい日付時刻ではないはず。C言語を扱うプログラマ以外の一般の人にとっても、わかりにくい事象となるでしょう。 2038年問題とは、C/C++のtime_t型が1970年1月1日0時0分0秒からの積算秒数と定義されており、その最大値の一般的な実装が2,147,483,648となっていることから、その最大値を超えたときに不具合が発生するというものです。 というわけで、Xデーは、世界協定時で2038年1月19日03時14分7秒(UTC)となります。 日本時間だと、2038年1月19日12時14分7秒(JST)になるので、もしトラブルが発生するとしたら真っ昼間です。大混乱になるかもしれません。 2000年問題の時と同様に、全世界のSEが血眼になって、問題が発生しないよう努力するはずなので、きっと何も起きないはず…であることを祈りたいです。 この問題をWikipediaで調べていて知ったのですが、2004年には既に、2038年問題を原因とするトラブルが発生していたんだそうでビックリです。 ちなみに、INASOFTで公開しているソフトウェアでも、問題となるC/C++言語のtime_t型を使っている箇所があります。 各プログラムに搭載されている「CCPU(環境情報の表示)」で、DHCPの有効期限を表示する機能がありますが、取得のためにGetAdaptersInfo() APIを用いており、そこで使用される構造体IP_ADAPTER_INFOの中に、time_tがあります。 たしか、64bit環境ではtime_tは64bitになっていたはずなので、2038年問題のXデーは西暦3000億年まで延長されるはず。 32bit環境として動作するプログラムについては、2038年以降は、DHCPの有効期限が正しく表示されない不具合に見舞われるということになりそうです。 この他に、libpngとzlibのコードの中でtime_tが使われているのを見かけました。 もしかしたら、これが何らかの問題に繋がる可能性もあるかもしれません。ただ、INASOFTで公開しているソフトウェアでlibpngを利用していたプログラムは、現在、サポート終了としてしまっているので、問題が起きても特に対応はしない予定です。 まぁ、20年後にINASOFTがまだ続いているとも限りませんけどね。 目次の表示: ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメール、フィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。 当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。 |
- 最近の更新 - |
|
3278881 (+0135)[+0255] Copyright© 2010-2025 INASOFT |