2038年問題

2038年問題(にせんさんじゅうはちねんもんだい)は、協定世界時(UTC)2038年1月19日3時14分7秒(日本標準時の場合、1月19日12時14分7秒)を過ぎると、コンピュータが誤動作する可能性があるとされる年問題

経緯

上から、2進・十進・問題のある時刻・正しい時刻。(GIFアニメ)3時14分7秒を超えたところで負の値となり、時刻に狂いが生じる恐れがある。

コンピュータおよびコンピュータプログラムにおける時刻の表現として「UNIX時間」《協定世界時における1970年1月1日0時0分0秒からの経過秒数[注釈 1]》を採用しているシステムがある。

UNIXおよびUNIX派生のオペレーティングシステム (OS) における基幹ソフトウェア部品の多くはC言語で書かれているが、前述の経過秒数を表現する型は、現在の標準では、「time_t型」である。C言語の標準である「ISO/IEC 9899:1999」では、time_t型の範囲や精度はいずれも実装定義としている[1]。UNIXの標準 (POSIX) には「shall be integer or real-floating types.」とのみ記述があり、ビット幅および値の範囲については何らの定めも無い。

伝統的な実装ではtime_tintまたはlongtypedefによる型エイリアス(別名)とし、その型は符号付き32ビット整数型であった。このため最大値は (231 − 1) = 2,147,483,647 となり、取り扱えるのは2,147,483,647秒(≒ 68年)までに限られていた。これを前提として作成されたプログラムは、協定世界時における1970年1月1日0時0分0秒日本標準時では1970年1月1日9時0分0秒)から2,147,483,647秒を経過した、2038年1月19日3時14分7秒(日本標準時では2038年1月19日12時14分7秒、閏秒は考慮していない)を過ぎると、この値がオーバーフロー[注釈 2]、もし時刻を正しく扱えていることを前提としたコードがあれば、誤動作する。

ある実装におけるtime_tの型を変更することだけであれば、プログラム中のたった1箇所 (typedef) を書き換えるだけであるが、実際の運用では、アプリケーションプログラムにおける時刻の扱い全てが正しくある必要がある。また、すでにあるデータ構造中で32ビット固定長として割り当てられていれば、問題が発生する。たとえば、Linuxのファイルシステムであるext2ext3ReiserFSタイムスタンプは同日付までしか対応していない。

この期日以前でもプログラムで内部的にこの制限を超えた時刻データを扱おうとすれば同様のエラーが発生するため、たとえばちょうど半分を経過した2004年1月11日にはすでにATMの誤動作といったトラブルが発生した[2]。この事例ではプログラム中のある時刻と別の時刻の中間の時刻を求めるような処理で、相加平均を単純に求める のような式を利用していたものとみられる[注釈 3]。他にも顕在化していないトラブルが今後表面化するという可能性はあり得る。

2000年問題はアプリケーションレベルでの修正が可能であったが、この問題は現在普及しているC言語処理系やOSのAPIといったシステムの深い層に潜む問題であるため、2000年問題より深刻であるという指摘もある[3]

対策

対策としては、time_t型を符号付き64ビット整数型(一般にはlong long int)にするという方法がある。符号付き64ビット整数型の場合、上限は9,223,372,036,854,775,807(263 − 1)である。これを年数に変換するとおよそ西暦3000億年[注釈 4]まで使用できるので、事実上問題が発生することはない。64ビット版のオペレーティングシステム処理系では、time_t型は符号付き64ビット整数型で表されるようになってきている。UNIXベースのOSでは、64ビット版でtime_tも併せて64ビット化されることが多い。

何らかの事情によりtime_tを64ビット化できない環境に対しては、time_tを符号無し32ビット整数型(一般的にはunsigned long int)にするという回避策が使われることもある。この場合、上限は4,294,967,295(232 − 1)となり、2106年2月7日6時28分15秒(閏秒を考慮しない場合)まで表現可能になる。従って2038年問題は回避できるが、結局2106年には問題が発生するため、あくまで64ビット化が困難な環境に限って適用すべき方法とされる。

macOS (Mac OS X 10.0) ではNSDateクラスにて協定世界時の2001年1月1日0時ちょうどをエポックタイムとして刷新し[4][5]、また経過時間の内部表現として倍精度浮動小数点数を用いるようになったため[6]、これらを使用している限り、2038年については問題を回避できる。なお、macOS Mojaveは32ビットアプリケーションを動作させることのできる最後のバージョンとなり、macOS Catalinaでは起動することができなくなった[7]

32ビット版のMicrosoft Windows (Win32) では内部時刻の表現に64ビット化されたFILETIME構造体[8]を使っており、time_tを使っているわけではない。そのため、Windows OS側に関しては、旧OSに関する一部のケースを除き[9]、32ビット版であっても2038年問題は発生しない[10]。ただし、Microsoft C/C++ (MS-C) および古いバージョンのMicrosoft Visual C++ (MSVC) においては、time_tは32ビットのlong intを使って定義されていたため、これらの古い処理系のC/C++ランタイムライブラリ (CRT) を利用して構築されたアプリケーションソフトウェアDLLなどは、2038年問題を抱えていることになる。x64アーキテクチャの64ビット版Windows OS上ではWOW64サブシステムによりx86アーキテクチャ向けに構築された32ビットアプリケーションも動作させることができるが、古い32ビットアプリケーションにおける2038年問題は、たとえWindows OSを64ビット版に入れ替えたとしても回避することはできない。Microsoft Visual C++ 2005以降では、既定でtime_t__time64_tと等しく[11]、32ビットアプリケーションであってもtime_tは64ビット化されるため、古いアプリケーションを新しい処理系およびランタイムで構築し直せば2038年問題を回避できる。

関連した問題

  • 時刻aと時刻bのちょうど中間の時刻を求める時、それぞれのUnixタイムをTaとTbとして、(Ta+Tb)/2 と計算すると、2038年問題の半分以降が経過していればTa+Tbの計算でオーバーフローし、誤った結果となる。これは1,073,741,824 秒目で、2004年1月10日13時37分4秒以降がこの場合に相当する。2004年1月10日あるいは11日に、この事例と推察される報告があった[12]。 この問題を回避するためには、計算方法を工夫する必要がある。例えば、時刻の中間を求める際に、オーバーフローを避けるために次のような方法が考えらる:
    1. 時刻の差を計算する: まず、時刻bから時刻aを引いて、その差を求める。
    2. 差の半分を求める: 求めた差を2で割る。
    3. 時刻aに加える: 最後に、時刻aに差の半分を加えることで、中間の時刻を求める。 この方法を数式で表すと、次のようになる: 中間時刻=Ta+(TbTa)/2

類似する年問題

  • 2001年9月9日問題は、2001年9月9日にtime_t型の値が9億秒から10億秒と桁が増えることに伴う問題。time_t型の値を文字列(辞書順)でソートしていたことで、「9億 > 10億」と判断され、項目の新旧が正しく判断されず、新しく作られた項目が表示されない、古いものとみなされ削除されるなどの問題が発生した。
  • NTPなど、1900年1月1日からの積算秒数で時間を表現するシステムもあり、符号なし32ビットの値が2036年2月7日6時28分15秒 (UTC) を超えるとオーバーフローすることによって問題が発生する(→2036年問題)。SNTPv4を定めたRFC 4330には、最上位ビットが0の場合は時刻が2036年から2104年の間であるとみなして、2036年2月7日6時28分16秒 (UTC) を起点として計算することで2036年問題を回避する方法が書かれている。
  • 2038年4月23日問題 - ユリウス通日を内部日付表現に用いる物のうち、基準日(グレゴリオ暦1858年11月17日正午)からの修正ユリウス日(MJD)を使用し、かつ16ビットで処理しているシステムでは、日数が16ビットからあふれるために問題が起こる。

脚注

注釈

  1. ^ 「ただし、うるう秒を無視して現在時刻から逆算した値を使用する」として運用されていることが専らである。
  2. ^ Cではオーバーフロー発生時の動作は未定義。整数が2の補数でオーバーフローした値がと扱われる場合、2038年1月19日3時14分7秒の次は1901年12月13日20時45分52秒となる。
  3. ^ 計算機による計算においては、このような一見して何の変哲もない式によるバグは入力数値がある程度大きくならないと露呈しにくく、この問題に限らず普遍的なものであり、一般に注意を要する。
  4. ^ 9,223,372,036,854,775,807 秒 ÷ (602 × 24 × 365.2425) ≒ 2.9228×1011年 ≒ 3000億年。これは太陽系の寿命よりもはるかに長い(太陽白色矮星化は西暦68億年ごろ)。

出典

関連項目

外部リンク

Read other articles:

Canadian Museum of NatureGedung Victoria Memorial MuseumInformasi umumJenisMuseum sejarah alamGaya arsitekturKebangkitan Gotik Kanada, Baronial SkotlandiaLokasiOttawa, Ontario, KanadaKoordinat45°24′46″N 75°41′20″W / 45.41266°N 75.68875°W / 45.41266; -75.68875Koordinat: 45°24′46″N 75°41′20″W / 45.41266°N 75.68875°W / 45.41266; -75.68875Penyewa sekarangCanadian Museum of NatureMulai dibangun1905Rampung1912PemilikPemerintah ...

 

British antiques dealer and collector (1938–2018) Christopher GibbsBornChristopher Henry Gibbs29 July 1938Died28 July 2018(2018-07-28) (aged 79)EducationEton College (expelled) Stanbridge Earls SchoolAlma materUniversity of PoitiersOccupation(s)Antiques dealer and collectorKnown forthe King of ChelseaParent(s)Hon. Sir Geoffrey Cokayne Gibbs KCMG and Helen Margaret Leslie CBERelativesHerbert Gibbs, 1st Baron Hunsdon of Hunsdon (grandfather) Sir Roger Gibbs (brother) Christophe...

 

Egyptian Pharaoh from 404 to 399 BC AmyrtaeusAmenirdisu; Amyrtaios of Sais (Ἀμυρταῖος Σαΐτης in Greek)Aramaic papyrus from Elephantine, dating to Regnal Year 5 of Amyrtaeus (400 BC).PharaohReign5 years, 404 BC to October 399 BCPredecessorDarius IISuccessorNepherites IRoyal titulary Nomen jmn-jr-dj-s Amun causes him to be given DiedOctober 399 BCDynasty28th Dynasty Amyrtaeus of Sais (Greek: Ἀμυρταῖος Amyrtaios, a Hellenization of the original Egyptian name Amen...

Basilika Santo Mikael sang Malaikat AgungBasilika Minor Santo Mikael sang Malaikat AgungPrancis: Basilique Saint-Michel-Archange de MentonBasilika Santo Mikael sang Malaikat AgungLokasiMentonNegara PrancisDenominasiGereja Katolik RomaArsitekturStatusBasilika minorStatus fungsionalAktif Basilika Santo Mikael sang Malaikat Agung (Prancis: Basilique Saint-Michel-Archange de Menton) adalah sebuah gereja basilika minor Katolik yang terletak di Menton, Prancis. Basilika ini ditetapkan ...

 

Cette page concerne l'année 1944 (MCMXLIV en chiffres romains) du calendrier grégorien. Pour l’article homonyme, voir 1944 (chanson). Chronologies Into the Jaws of Death, photographie des troupes américaines avançant dans l'eau d'Omaha Beach, le 6 juin 1944.Chronologie de la Seconde Guerre mondiale Jan - Fév - Mar - Avr - Mai - Juin Juil - Aoû - Sep - Oct - Nov - Déc Chronologie dans le monde 1941 1942 1943  1944  1945 1946 1947Décennies :1910 1920 1930  1940...

 

Website for tracking Earth satellites This article is about the astronomical web site. For the Peter Sellers film, see Heavens Above! Heavens-AboveHeavens-Above home pageAvailable inMultilingualOwnerChris PeatCreated byChris PeatURLheavens-above.comCurrent statusActive Heavens-Above is a non-profit website developed and maintained by Chris Peat as Heavens-Above GmbH. The web site is dedicated to helping people observe and track satellites orbiting the Earth without the need for...

この項目には、一部のコンピュータや閲覧ソフトで表示できない文字が含まれています(詳細)。 数字の大字(だいじ)は、漢数字の一種。通常用いる単純な字形の漢数字(小字)の代わりに同じ音の別の漢字を用いるものである。 概要 壱万円日本銀行券(「壱」が大字) 弐千円日本銀行券(「弐」が大字) 漢数字には「一」「二」「三」と続く小字と、「壱」「�...

 

Location of Morris County in Texas This is a list of the National Register of Historic Places listings in Morris County, Texas. This is intended to be a complete list of properties and districts listed on the National Register of Historic Places in Morris County, Texas. There is one property listed on the National Register in the county. This property is also a State Antiquities Landmark.           This National Park Service list is complete through NPS recent...

 

2013 film MoebiusFilm posterKorean nameHangul뫼비우스Revised RomanizationMoebiuseuMcCune–ReischauerMoebiusŭ Directed byKim Ki-dukScreenplay byKim Ki-dukStory byKim Ki-dukProduced byKim Ki-dukKim Woo-taekKim Soon-moStarringCho Jae-hyunSeo Yeong-juLee Na-raCinematographyKim Ki-dukEdited byKim Ki-dukMusic byPark In-youngProductioncompanyKim Ki-Duk FilmDistributed byNext Entertainment WorldRelease dates October 3, 2013 (2013-10-03) (Venice) October 5, 2013 ...

Dodge ChallengerDescrizione generaleCostruttore  Dodge Tipo principaleCoupé Altre versioniCabriolet Produzionedal 1969 SeriePrima (1970–1974)Seconda (1978–1983)Terza (2008-2023) La Dodge Challenger è un'autovettura prodotta dalla casa automobilistica statunitense Dodge dal 1969 al 22 dicembre 2023 in tre diverse generazioni. Indice 1 Prima generazione (1969–1974) 2 Seconda generazione (1978–1983) 3 Terza generazione (2008-2023) 4 Attività sportiva 5 Note 6 Voci correlate 7 Alt...

 

此条目序言章节没有充分总结全文内容要点。 (2019年3月21日)请考虑扩充序言,清晰概述条目所有重點。请在条目的讨论页讨论此问题。 哈萨克斯坦總統哈薩克總統旗現任Қасым-Жомарт Кемелұлы Тоқаев卡瑟姆若马尔特·托卡耶夫自2019年3月20日在任任期7年首任努尔苏丹·纳扎尔巴耶夫设立1990年4月24日(哈薩克蘇維埃社會主義共和國總統) 哈萨克斯坦 哈萨克斯坦政府...

 

 本表是動態列表,或許永遠不會完結。歡迎您參考可靠來源來查漏補缺。 潛伏於中華民國國軍中的中共間諜列表收錄根據公開資料來源,曾潛伏於中華民國國軍、被中國共產黨聲稱或承認,或者遭中華民國政府調查審判,為中華人民共和國和中國人民解放軍進行間諜行為的人物。以下列表以現今可查知時間為準,正確的間諜活動或洩漏機密時間可能早於或晚於以下所歸�...

Alfabeto casubio Versión antigua del alfabeto casubio, que se remonta a 1850Tipo variante del alfabeto latinoIdiomas casubio[editar datos en Wikidata] El alfabeto casubio o casubiano (kaszëbsczi alfabét, kaszëbsczé abecadło) es la escritura del idioma casubio, basada en el alfabeto latino. El alfabeto casubio consta de 34 letras: A, Ą, Ã, B, C, D, E, É, Ë, F, G, H, I, J, K, L, Ł, M, N, Ń, O, Ò, Ó, Ô, P, R, S, T, U, Ù, W, Y, Z, Ż El idioma casubio también usa alguno...

 

Austrian government worker and anti-Nazi resistance activist Part of a series onConservatism in Austria Ideologies Austrian nationalism Christian democracy Conservative corporatism Green conservatism Liberal conservatism Principles Austrian culture Catholic social teaching Class collaboration Clericalism Duty Family values Imperialism Monarchism Multiculturalism Organicism Political Catholicism Subsidiarity Tradition History Austria-Hungary Austrian Civil War Austrian Empire Carlsbad Decrees ...

 

Richard P. FeynmanLahir11 Mei 1918New YorkMeninggal15 Februari 1988Los Angeles, CaliforniaTempat tinggalAmerika SerikatKebangsaanAmerika SerikatAlmamaterMassachusetts Institute of TechnologyPrinceton UniversityDikenal atasElektrodinamika kuantumTeori partikel Diagram FeynmanPenghargaan Penghargaan Nobel dalam Fisika (1965) Oersted Medal (1972)Karier ilmiahBidangFisikaInstitusiManhattan ProjectCornell UniversityCalifornia Institute of TechnologyPembimbing doktoralJohn Archibald WheelerMahasis...

1976年夏季奥林匹克运动会足球比赛于1976年7月18日至7月31日在加拿大举行。 场地 蒙特利尔 渥太華 舍布魯克 多伦多 蒙特婁奧林匹克體育場 蘭斯頓體育場 Municipal Stadium (Sherbrooke)(英语:Municipal Stadium (Sherbrooke)) Varsity Stadium(英语:Varsity Stadium) Capacity: 70,000 Capacity: 30,000 Capacity: 10,000 Capacity: 21,739 奖牌榜 排名 隊伍 Pld W D L GF GA GD Pts 1  东德(GDR) 5 4 1 0 10 2 +8 9 2  波兰�...

 

Гнівушевський Ігор Васильович  Сержант Загальна інформаціяНародження 20 травня 1973(1973-05-20)КривеСмерть 26 серпня 2014(2014-08-26) (41 рік)ХрящуватеПоховання Радехівський районВійськова службаРоки служби 2014Приналежність  УкраїнаВид ЗС  Збройні силиРід військ  Механізов�...

 

Port in United StatesPort of PortlandMarine Terminal 6 - the state's only deep-draft container terminalClick on the map for a fullscreen viewLocationCountryUnited StatesLocationPortland, OregonDetailsOpened1891Main importsAutomobiles, steel, and limestoneMain exportsWheat, soda ash, potash, and hayStatisticsDraft depth43 feetAir draft196 feet, restricted by Astoria–Megler BridgeWebsitewww.portofportland.com The Port of Portland is the port district responsible for overseeing Portland Intern...

Untuk kegunaan lain, lihat T26 (disambiguasi). T-26 adalah sebuah tank infanteri ringan milik Tentara Merah dari Soviet yang digunakan pada masa Perang Dunia II (terutama tahun 1930-an). Pengembangan Pada tahun 1930 Uni Soviet membeli 15 unit tank Vickers Mark E dari Inggris. Tank-tank Vickers Mark E tersebut kemudian digunakan sebagai sarana latihan dan mempelajari taktik peperangan kendaraan lapis baja. Beberapa unit dari Vickers Mark E itu digunakan sebagai sarana penelitian untuk mengemba...

 

成功嶺展示的天兵防空系統 天兵防空系統(英語:Skyguard)為1966年瑞士歐瑞康公司所研發的雷達射控快砲系統[註 1],1975年再與美國Teledyne公司合作研發陸射型麻雀飛彈加入,形成彈炮合一防空系統,包含天兵雷達、35快砲、麻雀飛彈發射器。 概要 射控雷達車 MIM-7F/M麻雀飛彈發射器 歐瑞康 GDF-003 35快砲 在天兵防空系統成軍前,瑞士的35快砲由超級蝙蝠雷達(英语:Super...