באגים הקשורים לשעה ותאריך

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

בתוכנה, באגים הקשורים לשעה ותאריך הם באגים הגורמים לחישוב שגוי של זמן, שעה או תאריך וזמן מערכת, שמתרחש לרוב במעבר בין ימים, חודשים או שנים, או במצב של גלישה מגבולות הזמן המקסימלי שהוגדר במערכת. לבאגים אלה יש השלכות על החישובים התלויים בנתוני הזמן, והם עלולים להוביל לשגיאות קשות ולשיתוק פעולה של מערכות.

המקרה הידוע ביותר הוא באג 2000, אבל ידועים מקרים נוספים לאורך ההיסטוריה של המחשוב ובעתיד.

באגים היסטוריים

באג 1970

במהלך שנות ה-60 של המאה ה-20 במספר תוכנות היה נהוג לייצג את השנה באמצעות ספרה בודדת (0–9). כך היה יותר פשוט לרשום, למשל בשפות תכנות כמו COBOL. הבעיה אותרה ותוקנה עוד לפני 1970 ולא ידוע על נזק שנגרם כתוצאה מכך.

באג 1975

טווח השדה של השנה במערכת ההפעלה PDP-10 לא היה מסוגל להכיל יותר מידע החל מ-4 בינואר באותה שנה. נרשמו מספר תקלות. במטרה לפתור את הבעיה, פותח פורמט חלופי.[1]

באג 1978

מערכת ההפעלה OS/8 של PDP-8 משתמשת ב:

  • 4 ביטים לחודש.
  • 5 ביטים לתאריך שבו.
  • 3 ביטים לשנה.[2][3]

בעיה זו זוהתה כשפותח COS-310 (אנ'), ותאריכים נרשמו בצורה שונה.[4][5]

באג 1989

תוכנות מיינפריים מסוימות נכתבו כדי לקודד תאריכים כמספר הימים מאז 'תאריך אפס' ב-1 בינואר 1900, ואוחסנו כמספרים שלמים בינאריים בגודל 16 סיביות כולל סיבית סימן. ב-18 בספטמבר 1989, תוכנות אלה החלו להיכשל, כיוון שהתאריך היה בדיוק 32,768 (215) יום מאז תאריך האפס. ערכים ביום זה ואחריו אינם משתלבים במספר שלם של 16 סיביות בעל סיבית סימן, אלא מוצפים ומחזירים ערכים שליליים.

באג 1997

מערכת ההפעלה Domain/OS (אנ') שהתבססה על חישוב זמן לפי 4 מיקרושניות, שהתרחשה מאז 1 בינואר 1980, הגיעה לסיומה[דרושה הבהרה] ב-2 בנובמבר, עת הגיעה ל-47 סיביות, ובכך הופכת מערכות לא מתוקנות לבלתי שמישות.[6]

באג 1999

התרחשו מספר באגים בחודשים האחרונים של השנה, הקשורים בהתכוננות לקראת באג 2000, אך קיבלו פחות פרסום ממנו.

התהפכות ה-GPS הראשונה

תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,[7] בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.[8] כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.

9/9/99

עמוד ראשי
ראו גם – מספר קסם (תכנות)

בתוכנות או מערכי נתונים רבים, "9/9/99" שימש כערך נוכל לציון תאריך שלא נפתר או כמסיים לציון שאין נתונים נוספים בערכה. הדבר העלה סוגיות עם הגעת התאריך הממשי שהוא מייצג, 9 בספטמבר 1999.[9][7]

באג 2000

לוח אלקטרוני בצרפת, שהוצג בכניסה לבית ספר בנאנט. כתוצאה מבאג 2000, הלוח הראה את התאריך "3 בינואר 1900".
ערך מורחב – באג 2000
עמוד ראשי
ראו גם – בעיית שנה מעוברת, בעיית שנת 1900

ייצוגים דו-ספרתיים של שנים

בשנה זו נוצרה בעיה מאחר שעד אותה שנה ספרות השנה הוצגו באמצעות שתי ספרות בלבד, מטעמי נוחות וחיסכון. מפתחי הקודים מעשרות שנים מלפני כן תיקנו את הבעיה ובפועל לא נגרמו נזקים משמעותיים.[10]

בעיות המשך שנגרמו כתוצאה מתיקונים זמניים מסוימים לבאג 2000 צצו ויצוצו בנקודות שונות במאה ה-21. חלק מהתוכנות הותאמו לבאג 2000 על ידי המשך שימוש בשתי ספרות, אך בחירת שנה שרירותית שלפניה שנים אלו מתפרשות כ-20xx, ואחריה מתפרשות כ-19xx.[11]

לדוגמה, ייתכן שתוכנה שונתה כך שהיא מתייחסת לערכי שנה דו ספרתיים 00–68 כאל הכוונה לשנת 2000 עד 2068, ולערכים 69–99 כאל הכוונה ל-1969 עד 1999.[12] תוכנה כזו לא תוכל להתמודד נכון עם שנים מעבר ל-2068.

עבור יישומים הנדרשים לחשב שנת הלידה (או שנה אחרת בעבר), אלגוריתם כזה שימש זמן רב כדי להתגבר על בעיית שנת 1900, אך הוא לא הצליח לזהות אנשים מעל גיל 100.

באג 2001

ב-9 בספטמבר התרחש באג בסוגי פורמט קבצים בודדים מערכת ההפעלה Unix כאשר מספר השניות בזמן יוניקס הגיע למיליארד. הבאג יצר בעיה בסוגי קבצים שמשתמשים במספר "999,999,999" בשביל לייצג את סוף הקובץ.[13]

באג 2010

חלק מהמערכות נתקלו בבעיות כשנכנסה שנת 2010. בעיה זו כונתה על ידי חלק מהתקשורת כבאג "2010" או "Y2.01k".[14]

המקור העיקרי לבעיות היה בלבול בין קידוד מספרים בבסיס הקסדצימלי לבין עשרוני בקידוד בינארי. המספרים 0 עד 9 מקודדים הן בהקסדצימלי והן בבינארי כ-0016 עד 0916. אך המספר 10 מקודד בהקסדצימלי כ-0A16 ובעשרוני בקידוד בינארי כ-1016. לפיכך 1016 בקידוד בינארי המתפרש בקידוד הקסדצימלי מייצג בטעות את המספר העשרוני 16.

לדוגמה, פרוטוקול ה-SMS משתמש בקידוד בינארי לתאריכים, כך שחלק מתוכנות הטלפון הנייד הציגו בצורה שגויה את תאריכי ההודעות בתור שנת 2016 במקום 2010. Windows Mobile הייתה התוכנה הראשונה שדווחה שהושפעה מהתקלות הללו; בחלק מהמקרים, Windows Mobile 6 ‏(WM6) שינה את התאריך של כל הודעת SMS נכנסת שנשלחה לאחר 1 בינואר 2010 משנת 2010 לשנת 2016.[15][16]

מערכות אחרות שנפגעו כוללות מסופי EFTPOS,[17] ו-PlayStation 3 (למעט דגם Slim).[18]

התקלה החשובה ביותר התרחשה בגרמניה, שם למעלה מ-20 מיליון כרטיסי בנק הפכו לבלתי שמישים, ובסיטיבנק בלגיה, שם שבבי זיהוי הלקוחות שלה בדיג'יפס הפסיקו לעבוד.[19]

באג 2011

ערך מורחב – באג 2011

טייוואן משתמשת באופן רשמי בלוח מינגו (אנ'), הרואה את השנה הגרגוריאנית 1912 כשנה 1. לפיכך, השנה הגרגוריאנית 2011 היא השנה הטייוואנית ה-100, השנה הראשונה בת 3 ספרות.[20]

באג 2013

הגשושית פגיעה עמוקה של סוכנות החלל נאס"א איבדה קשר עם כדור הארץ באוגוסט 2013, אחרי שהשעון שבה ספר 232 עשיריות שנייה מאז 1 בינואר 2000.[21]

באג 2015

חלק מהטלפונים הסלולריים של סמסונג שהכילו ערכת שבבים של חברת Agere (כגון Samsung SGH-C170) מיאנו לעבור את התאריך 31 בדצמבר 2014. התאריך השתנה אוטומטית ל-2015, אבל חזר לתאריך הבסיס אחרי כל הפסקת מתח (כגון הוצאת סוללה).[דרוש מקור]

באג 2017

הדקה האחרונה בשנת 2016 הייתה דקה מעוברת ועם כניסת השנה החדשה, נוצרו בעיות בגישה למספר שרתים.[22] טכנאים התגברו על הבעיה בתוך 90 דקות.

באג 2019

התהפכות ה-GPS השנייה

תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,[7] בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.[8] כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.

מעבר לוח השנה היפני

ערך מורחב – באג תקופת לוח השנה היפני

ב-30 באפריל 2019 ויתר הקיסר אקיהיטו על תפקידו והעביר אותו לבנו נארוהיטו. כיוון שביפן, מכנים שנים באופן מסורתי לפי שמות התקופות המתאימות לתקופת שלטונו של כל קיסר, הדבר הביא לשם תקופה חדשה, תקופת ראיווה (令和), שהחלה עם כניסתו של נארוהיטו לכס המלוכה למחרת. מכיוון שהקיסר הקודם, הירוהיטו, נפטר ב-7 בינואר 1989 ותקופת שלטונו של אקיהיטו הייתה דומה בעיקר לתקופת העלייה בשימוש במחשבים, מרבית התוכנות לא נבדקו כדי להבטיח התנהגות נכונה בשינוי בתקופה. יתר על כן, הבדיקה הסתבכה בגלל העובדה ששם העידן החדש לא נחשף עד 1 באפריל 2019. לכן, צפויות טעויות מתוכנות שלא צפו עידן חדש.

באג 2020

WWE 2K20 ו-Star Wars Jedi: Fallen Order קרסו שניהם ב-1 בינואר 2020, כשהשנה התחלפה. ניתן לעקוף את התקלות רק על ידי איפוס השנה חזרה לשנת 2019 עד לתיקון התקלה.[23][24] בנוסף, Crystal Reports 8.5 לא הצליח ליצור דוחות ספציפיים החל משנת 2020.[25]

מוני חניה של Parkeon בניו יורק ובמקומות אחרים לא הצליחו לקבל כרטיסי אשראי כאמצעי תשלום החל משנת 2020. פותחה דרך לעקיפת הבעיה, אך נדרש לעדכן כל מונה בנפרד. בניו יורק המונים לא היו אמורים להיות מתוקנים עד ל-9 בינואר.[26][27]

בפולין, כ-5,000 קופות רושמות הפסיקו את הדפסת התאריך כראוי.[28]

שעוני ספורט חכמים של SUUNTO הראו שגיאה במחשוב ימי השבוע, שהוצגה בצעד +2 (כלומר: שישי (FRI) במקום רביעי (WED), שבת (SAT) במקום חמישי (THU) וכן הלאה). עבור שעונים של SUUNTO מדגם Spartan, תוקן הבאג עם שחרור הקושחה 2.8.32.[29]

Mac OS Classic

לוח הבקרה בגרסאות 6, 7 ו-8 של Mac OS Classic מאפשר רק לקבוע את התאריך עד ליום 31 בדצמבר 2019, אם כי המערכת מסוגלת להמשיך ולקדם את הזמן מעבר לאותו תאריך.[30][31]

באג 2021

משתמשי סמסונג דיווחו כי טלפונים הפועלים על עדכון One UI 3.0 האחרון או אנדרואיד 11 איבדו את הגישה לסוללה ולסטטיסטיקת הטעינה החל משנת 2021. מכשירים מושפעים לא דיווחו על סטטיסטיקות שימוש, ובכך יותירו את החלקים האלו ריקים.[32][33] דגמים ישנים יותר של Sony Bravia דיווחו על נתונים לא תקינים שמקבלים כשמנסים להגדיר תזכורות ללוח השידורים האלקטרוני.

באג 2022

תאריכים המאוחסנים בפורמט yymmddHHMM שהומרו למספר שלם מסומן של 32 סיביות גלשו ב-1 בינואר 2022, מפני ש-. מספרי העדכון של רכיבי סריקת תוכנות זדוניות של Microsoft Exchange הושפעו במיוחד היה, ונראה כי הם משמשים לבדיקה מתמטית לקביעת העדכון האחרון.[34][35]

מכוניות הונדה ואקורה שיוצרו בין 2004 ל-2012 המכילות מערכות ניווט GPS הציגו באופן שגוי את השנה כשנת 2002. בעיה זו נבעה מגלישה נומרית מתחילת ספירת ה-GPS. הונדה אישרה כי הבעיה תיפתר מעצמה באוגוסט 2022.[36][37]

באגים עתידיים צפויים

באג 2025

ביפן, מספר מערכות מחשבים ישנות משתמשות בלוח השנה היפני שלא עודכן, עדיין סופרות שנים לפי תקופת שווה. השנה 2025 מתאימה באותן מערכות לשנה ה-100 בתקופת שווה, מה שעלול לגרום לבעיות אם התוכנה מניחה שתי ספרות לשנה.[38]

באג 2028

בסוף שנות השבעים של המאה העשרים, במערכות Data General Nova ו-Eclipse, חברת המחשבים העולמית (שעושה יישומי איגודי אשראי) יצרה תבנית תאריך זו;[דרוש מקור]

שדה תאריך של 16 סיביות:

  • 128 שנים = 7 ביטים (‎1900+128=2028)
  • 12 חודשים = 4 ביטים
  • 31 יום = 5 ביטים

תאריכים הושוו באופן ישיר באמצעות פונקציות ללא סיבית סימן.

אין מקרים ידועים של פורמט זה בשימוש כיום.

באג 2031

מערכות מסוימות, כמו Nucleus OS של מדיהטק (אנ'), מגיעות רק עד 31 בדצמבר 2030.[דרוש מקור]

באג 2032

Palm OS (אנ') משתמש בשני מספרים שלמים בעלי סיבית סימן עם תקופת 1970, כמו גם במספרים שלמים ללא סיבית סימן עם תקופת 1904, עבור פונקציות מערכת שונות,[39] כגון עבור שעון מערכת ותאריכי קבצים. אמנם זה אמור לגרום לכך ש-Palm OS יהיה רגיש לבאג 2038, אך Palm OS משתמש גם בשדה של 7 סיביות לאחסון ערך השנה, עם ספירה של תקופה שונה משנת 1904, וכתוצאה מכך שנת המקסימום שלו היא (1904+127) 2031.[40]

באג 2034

רוב הטלפונים של Siemens Mobile יכולים לתמוך בתאריכים רק עד 2033-12-31.[דרוש מקור]

באג 2036

ל-Network Time Protocol יש בעיית גלישה הקשורה לבאג 2038, המתבטאת בשעה 06:28:16 UTC ב-7 בפברואר 2036, ולא בשנת 2038. חותמות הזמן של 64 סיביות ש-NTP משתמש בהן מורכבות מחלק של 32 סיביות עבור שניות וחלק של 32 סיביות לשנייה חלקית, מה שמקנה ל-NTP סולם זמן שמתהפך כל 232 שניות (כ-136 שנה או ליתר דיוק, 136 שנים, 70 ימים, 6 שעות, 28 דקות ו-16 שניות) ורזולוציה תאורטית של 2−32 שניות (233 פיקושניות). NTP משתמש בתקופה שמתחילה ב-1 בינואר 1900. ההתהפכות הראשונה מתרחשת בשנת 2036, לפני באג 2038 של UNIX.[41][42]

באג 2038

התהפכות זמן היוניקס

ערך מורחב – באג 2038

מערכות יוניקס המקוריות מותאמות למחשבי 32 ביט, ומונה הזמן בהן הוא מספר מסומן (כלומר חיובי או שלילי) שבו רק 31 ביטים מיועדים למנייה וביט אחד לסימן. המונה סופר שניות מ-1 בינואר 1970 בחצות, והוא יגלוש כשיגיע ל-2,147,483,647 ב-19 בינואר 2038. מרגע זה הוא יהפוך סימן ויתחיל למנות מ--2,147,483,647 המייצג את 13 בדצמבר 1901.[10]

בעיה זו טופלה ברוב מערכות ההפעלה המודרניות של יוניקס ומערכות הפעלה של יוניקס על ידי אחסון זמן המערכת כמספר שלם של 64 סיביות, אם כי עדיין יש צורך לשנות גם יישומים, פרוטוקולים ופורמטי קבצים בודדים. מערכות יוניקס ישנות של 32 ביט שמחשבות תאריכים עתידיים, ייתקלו בבאג עוד לפני 2038.

התהפכות ה-DVB

למערכת שידור הווידאו הדיגיטלי (DVB) יש בעיה ב-22 באפריל 2038, כאשר 16 הסיביות המשמשות להעברת ה-Modified Julian Days ‏(MJD) המשמשות לתזמון מדריכים אלקטרוניים יופעלו מאפס. המפרט ETSI EN 300 368 מציין בנספח ג' כי נוסחאות ה-MJD המסופקות תקפות עד 28 בפברואר 2100, אך לא מזכיר את המגבלות שהוטלו על ידי 16 הסיביות המשמשות להעברת הערך המתקבל.[דרוש מקור]

התהפכות ה-GPS השלישית

תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,[7] בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.[8] כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.

באג 2040

מחשבי מקינטוש מוקדמים של אפל מאחסנים זמן בשעונים בזמן אמת (Real-time clock) (RTC) שלהם ובמערכות הקבצים HFS (אנ') כמספר שניות של 32 סיביות מאז 00:00:00 ב-1 בינואר 1904. לאחר 06:28:15 ב-6 בפברואר 2040, הזמן יחזור ל-1904.[43] HFS+ (אנ'), פורמט ברירת המחדל של כל מחשבי מקינטוש האחרונים של אפל, מושפע גם הוא. מערכת הקבצים המחליפה של אפל (אנ') פותרת בעיה זו.

ProDOS למחשבי אפל II תומך במספרי שנה דו ספרתיים בלבד. כדי להימנע מבעיות של באג 2000, אפל פרסמה הערה טכנית לפיה מספר השנה אמור לייצג את 1940–2039.[44] תוכנה לפלטפורמה עשויה להציג באופן שגוי תאריכים החל משנת 2040. מאמץ של צד שלישי מתבצע כדי לעדכן את תוכנת ProDOS ותוכנות היישום לכדי תמיכה בשנים עד 2924.[45]

באג 2042

ב-18 בספטמבר 2042 שעון היום (TODC) יתהפך במחשבי IBM מיינפריים (IBM mainframe) S/370 וכן בדורותיהם הבאים, כולל הzSeries.[46]

שעוני יום ישנים יותר יושמו כמספר של 64 סיביות של 2−12 מיקרו שניות (0.244 ננו-שניות), והבסיס הסטנדרטי היה 1 בינואר 1900 UT. ביולי 1999 הוכרז על שעון ה-TODC המורחב, שהאריך את השעון ימינה (כלומר, הביטים המורחבים פחות משמעותיים מהביטים המקוריים). הרזולוציה בפועל תלויה במודל, אך הפורמט עקבי, ולכן יתהפך לאחר 252 מיקרו שניות.[46]

ערך ה-TODC נגיש לתוכנות מצב משתמש ומשמש לעיתים קרובות לתזמון וליצירת מזהים ייחודיים לאירועים.

בעוד ש-IBM הגדירה והטמיעה פורמט חומרה ארוך יותר במכונות האחרונות (128 סיביות), שמאריך את הטיימר בשני הקצוות לפחות ב-8 סיביות נוספות, תוכנות רבות ממשיכות להסתמך על פורמט 64 סיביות שנותר כתת-קבוצה נגישה של הטיימר הארוך יותר.

באג 2048

למערכת ATSC תהיה בעיה דומה לנושא ה-DVB שתוארה לעיל לאחר 2048 עקב השימוש שלה בשניות GPS של 32 סיביות שמתחילות מ-6 בינואר 1980.

לוגיקת תכנון הקיבולת במערכת ה-ERP‏, SAP S/4HANA, תומכת בתאריכי סיום בלבד עד 19 בינואר 2048 (24855 ימים החל מ-1 בינואר 1980). זה נוגע למשל לתכנון הייצור, התחזוקה והפיקוח.[47]

באג 2050

מחשבוני טקסס אינסטרומנטס שונים ממשפחות TI BA II Plus‏, TI BA II Plus Professional‏, TI-83‏, TI-84 ו-NSpire תומכים בפונקציה בשם dbd המשמשת כדי לחשב את מספר הימים בין תאריכים. פונקציה זו מקבלת תאריכים בין התאריכים 1950-01-01 (1 בינואר 1950) ו-2049-12-31 (31 בדצמבר 2049) בלבד. תחום פוטנציאלי אחד שבו הבאג יתחיל לגרום לבעיות בשנת 2020 והלאה הוא בחישוב משכנתאות ל-30 שנים ומעלה.[48][49]

באג 2051

Wii ו-נינטנדו 3DS יתהפכו בסוף 31 בדצמבר 2050, ויחזרו חזרה עד ל-1 בינואר 2000. חלק מהמשחקים בקונסולות שיש להם מערכות לוח שנה משלהם יחזרו לשנה אחרת שנקבעה על פי המשחק; דוגמה לכך הוא המשחק Animal Crossing: New Leaf, שיחזור חזרה ל-1 בינואר 2012.[50]

באג 2061

הנינטנדו סוויץ' לא מאפשרים למשתמשים להכניס תאריכים מעבור ל-2060-12-31. עם זאת, המערכת עדיין מסוגלת לחשב זמן מעבר לתאריך זה.[51]

באג 2079

ימים 32,768 ו-65,536

תוכניות המאחסנות תאריכים כמספר הימים מאז תאריך שרירותי הן פגיעות יותר לאפקטים של התהפכות אם הערכים אינם רחבים מספיק כדי לאפשר לערכי התאריך טווח זמן מספיק גדול. ערכים בינאריים של 16 סיביות מתהפכים לאחר 32,768 (215) ימים מיום תחילת הספירה, ומתחילים לייצר ערכים שליליים. חלק ממערכות המיינפריים חוו כשלים בתוכנה כיוון שקודדו תאריכים כמספר הימים מאז 1 בינואר 1900, שהפיקו מספרי שנים שליליים בלתי צפויים ב-18 בספטמבר 1989. באופן דומה, ספירות בינאריות של 16 סיביות של ימים גולשות לאחר 65,536 (216) ימים. עבור תוכנות המשתמשות בתקופה שמתחילה ב-1 בינואר 1900, בעיה זו תתרחש ב-6 ביוני 2079.[52]

באג 2080

חלק מהטלפונים של נוקיה (אם לא כולם) המריצים את סדרה 40 (כמו Nokia X2-00) תומכים רק בתאריכים עד 2079-12-31 (31 בדצמבר 2079) ויסרבו לשנות תאריכים מעבר ל-2079-12-31. הפתרון הוא להשתמש בשנת 1996 במקום שנת 2080 כשנה מעוברת תואמת להצגת היום הנכון בשבוע, התאריך והחודש על המסך הראשי.

מערכות המאחסנות את השנה כערך דו ספרתי ‎00..99 באופן פנימי בלבד (כמו רבים מה-RTC) עשויות להתהפך בין 2079-12-31 לתקופת ה-IBM PC ו-DOS של 1980-01-01.

באג 2100

ערך מורחב – בעיית שנה מעוברת

מערכות DOS ו-Microsoft Windows תומכות בממשק תכנות יישומים עד ל-31 בדצמבר 2100, כאשר דבר זה מוצהר על-ידם. הסיבה היא שמערכות אלו לא מתוכנתות לכל הכללים הייחודיים של שנה מעוברת שיחולו בשנה זו.[53] ייתכנו בעיות לא צפויות ב-1 בינואר של שנה זו.

נינטנדו DS יתהפך בסוף 31 בדצמבר 2099, ויחזור חזרה ל-1 בינואר 2000.[52]

בעיה נוספת תופיע בסוף 28 בפברואר 2100, כיוון ששנת 2100 אינה שנה מעוברת, ואילו יישומים נפוצים רבים של האלגוריתם לשנה מעוברת אינם שלמים או פשוטים, ולכן יניחו בטעות שמדובר בשנה מעוברת. זה יגרום לתאריך להתהפך באופן שגוי מ-28 בפברואר 2100 ל־29 בפברואר 2100, במקום ישירות ל-1 במרץ 2100.

באג 2106

פורמטים רבים של קבצים, פרוטוקולי תקשורת וממשקי יישומים קיימים משתמשים בגרסה של תבנית התאריך time_t של יוניקס, המאחסנת את מספר השניות מאז תקופת יוניקס (חצות לפי הזמן האוניברסלי המתואם, 1 בינואר 1970) כמספר שלם בינארי של 32 סיביות. ערך זה יתהפך ב-7 בפברואר 2106 בשעה 06:28:15. כלומר, בשלב זה מספר השניות מאז 1 בינואר 1970 הוא FFFF FFFF בבסיס הקסדצימלי, ויגמר המקום בשדה המאפשר רישום (בעיית ייצוג אחסון זו אינה תלויה בתוכנות המאחסנות באופן פנימי ופועלות בזמני מערכת כערכים שלמים של 64 סיביות).

באג 2108

חותמות הזמן של התאריכים, המאוחסנות במערכות הקבצים FAT, שהוצגו במקור ב-‎86-DOS 0.42 ב-25 בפברואר 1981 והועברו ל-‏MS-DOS‏, PC DOS‏, DR-DOS וכו', תגלושנה בסוף 31 בדצמבר 2107. חותמות התאריך לשינוי האחרונות נשמרות ברישומי התיקייה, עם השנה מיוצגת כמספר של 7 סיביות (0–127), יחסית לשנת 1980, ובכך אין אפשרות לציין תאריכים כלשהם בשנת 2108 ואילך. פונקציות ה-API שהוגדרו כדי לאחזר תאריכים אלה תומכות באופן רשמי רק בתאריכים עד 31 בדצמבר 2099.

זה ישפיע גם על פורמט הקבצים ZIP, מכיוון שהוא משתמש בחותמות זמן לשינוי קובצי FAT באופן פנימי.

באג 2137

תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע בתחילה משתמש בערך 10 סיביות והודעות ניווט GPS מודרניות באמצעות שדה 13 סיביות. מערכות של 10 סיביות מתהפכות כל 1,024 שבועות (כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), ומערכות 13 סיביות מתהפכות כל 8,192 שבועות. מערכות של 13 סיביות יתהפכו לאפס בשנת 2137.[7][8]

באג 2150

תוכנות המחשבות תאריכים של לוח השנה העברי עלולות לא להיות פעילות כאשר שדה השנה, המתחשב בארבע אותיות כציון השנה, יצטרך לחשב תאריך בן חמש אותיות החל מא' בתשרי ה'תתקי"א (21 בספטמבר 2150).[53] עלולים להיתקל בבעיה זו עוד לפני כן בחישוב של תאריכים עתידיים.

באג 2262

חלק ממערכות המעקב אחרי הזמן שחלף סופרות ננו-שניות מאז 1970 תוך שימוש במספר שלם בגודל 64 סיביות כולל סיבית סימן, אשר יגלוש ב-11 באפריל 2262, ב-23:47:16. ממשק ה-UnixNano של שפת התכנות Go הוא דוגמה אחת.[54] דוגמאות אחרות כוללות את אובייקט חותם הזמן ב-Pandas של פייתון,[55] ה-chrono::system_clock של C++[56] וטיימרים של QEMU.[57]

באגים שיתרחשו עוד יותר מ-1,000 שנים

כאשר נוצרת סביבת עבודה של מחשבים ובפרט תוכנות ויישומים מניחים כי בעתיד הרחוק כבר לא יהיה בהן שימוש, שכן כל המין האנושי ובפרט הטכנולוגיה ישנו פניהם ללא היכר. בנוסף, בעיות תאורטיות יותר רחוקות מציבות סימן שאלה האם בכלל ייתכנו חיים על פני כדור הארץ ואף של היקום. למרות זאת, בסיסי נתונים עובדים על חישובים שונים ולכן, יש לדעת על אותם באגים צפויים.
עם זאת, יש לקחת בחשבון כי בשנים יותר רחוקות אורך היממה צפוי להתארך אמנם רק בשינויים זעירים, אך אם עדיין יישאר זכר לתכנות של ימינו הרי שספירה לפי שניות עלולה להשתבש.

באגים 4000 ו-8000

בעוד שרוב התוכנות (כולל אקסל, JavaScript ו-R) מזהות בצורה נכונה את 4000 ו-8000 כשנים מעוברות (מכיוון שהן מתחלקות ב-400), SAS לא מזהה את שנים אלה כשנים מעוברות, כתוצאה מ"כלל 4000 שנים" לא רשמי.

לפיכך, המרות תאריכים בין SAS לתוכנות אחרות ייצאו מהסנכרון לאחר 28 בפברואר 4000, אלא אם כן תוכנת SAS מתחשבת בפער הזה.[58][59]

באג 4501

Microsoft Outlook משתמש בתאריך 1 בינואר 4501 כשומר מקום ל-"none" או "empty".[60][61]

באג 10000

באג 10,000 (אנ') יתרחש כאשר המחשב יצטרך לזהות שנה בעלת חמש ספרות במקום ארבע. לפי הערכות, גם אם תתקיים האנושות עד אז, כל מערכות המחשבים ישתנו ללא היכר עד אז ויכללו פתרון לבעיה זו. עם זאת, בקרב מחקרים (בעיקר בפיזיקה ואסטרונומיה) נדרשים חישובים לתהליכים שאורכים אלפי שנים - למשל, בטיפול בפסולת גרעינית. יישומים אלה נאלצים להתמודד גם עם בעיית שנת ה-0. לכל שנים שהן חזקות עתידיות של 10 יש פוטנציאל לבעיות דומות.

במחשבי חברת אפל באג זה עלול להתרחש בשנת 10,001 בשל שיטת חישוב שונה של תאריכים.

ארגון בשם Long Now Foundation (אנ') פועל לשם הגברת המודעות לבאג ומנסה למצוא פתרונות מבעוד מועד.[62] "RFC 2550 - Y10K and Beyond" דן בפתרונות לטיפול בבעיה זו.

באג 30,828

החל מ-14 בספטמבר 30,828, Windows לא יקבל תאריכים מעבר ליום זה בעת ההפעלה, Windows יתלונן על "זמן מערכת לא חוקי". הסיבה לכך היא שערך ה-FILETIME ב-Windows, שהוא ערך 64 סיביות המתאים למספר המרווחים של 100 ננו-שניות מאז 1 בינואר 1601, בשעה 00:00:00.0000000 UTC, יעלה על הערך המרבי האפשרי שלו באותו יום בשעה 02:48:05.4775808 UTC.[63]

באגים 32,768 ו-65,536

תוכנות המעבדות שנים כערכי 16 סיביות עשויות להיתקל בבעיות עם השנים 32,768 או 65,536, תלוי אם מתייחסים לערך כמספר שלם עם סיבית סימן או ללא.

עבור באג 32,768, שנים אחרי 32,767 יכולות להתפרש כמספרים שליליים, החל משנת ‎−32,768.[64] סביר יותר שבאג 65,536 יתבטא בכך שהוא יציג את השנה 65,536 כשנה 0.[65]

באג 100,000

שנת 100,000 תהיה השנה הגרגוריאנית הראשונה בעלת שש ספרות, וככזו, היא עלולה לגרום לבאגים גדולים.

באג 275,760

ה-API התאריך ב-JavaScript שומר תאריכים כמספר המילי-שניות שעברו מאז 1 בינואר 1970. לתאריכים יש טווח של ±100,000,000 יום, כלומר תוכנות שנכתבות ב-JavaScript ומשתמשות ב-API התאריך לא יוכלו לשמור תאריך מעבר ל-13 בספטמבר 275,760.

באג 292,277,026,596

שנים בעייתיות מסוימות מתרחשות בעתיד הרחוק מאוד, הרבה מעבר לתוחלת החיים האפשרית של כדור הארץ, השמש, האנושות, ואפילו מעבר לכמה תחזיות של חייו של היקום, שהן מכונות בעיקר כעניינים בעלי עניין תאורטי, בדיחות או אינדיקציות לכך שבעיה קשורה איננה נפתרת באמת, לפי כל הגדרה סבירה של "נפתרה".

באג 292,277,026,596 (בערך ‎2.9×1011 שנים בעתיד) יתרחש כאשר זמן יוניקס 64 סיביות יגלוש ב-UTC 15:30:08 ביום ראשון, 4 בדצמבר 292,277,026,596 לספירה.[66][67] בעיה דומה תתרחש עם זמן יוניקס של 128 סיביות המאוחסן כננו-שניות, אשר יגלוש בשנה 5,391,559,471,918,239,498,981 לספירה (2127/1000000000, או כ-‎1.7014118×1029 שניות לאחר תחילת ספירת היוניקס בשנת 1970).

גלישת זמן יחסית

מיקרוסופט

ב-Windows 7‏, Windows Server 2003‏, ‏Windows Server 2008 ו-Windows Vista, מידע על התחלת חיבור TCP נשמר במאיות שנייה, תוך שימוש במספר שלם בגודל 32 סיביות ללא סיבית סימן, מה שגרם לגלישה ולחיבורי TCP להיכשל לאחר 497 ימים.[68]

בואינג

במטוס בואינג 787 היו לפחות שתי בעיות תוכנה הקשורות לאחסון זמן. בשנת 2015 דווח על שגיאה בה הזמן נשמר במאיות שנייה, תוך שימוש במספר שלם בגודל 32 סיביות כולל סיבית סימן, והמערכות קרסו לאחר 248 יום.[69] בשנת 2020 הוציאה ה-FAA הנחיית כשירות לטיסה לבעיה, שאם המטוס לא יכובה לחלוטין לפני שהגיע לזמן פעילות של 51 ימים רצופים, המערכות שלו תחלנה להציג נתונים מטעים.[70]

קישורים חיצוניים

הערות שוליים

  1. ^ Peter G. Neumann, The RISKS Digest, Volume 4 Issue 45, The RISKS Digest, Volume 4 Issue 45, ‏1987-02-02 (באנגלית)
  2. ^ 1970 – 1977
  3. ^ Directory of linctape-images/os8l/ps-8-system-25.linc, www.pdp8online.com
  4. ^ "COS-310, מערכת ההפעלה המסחרית של DEC עבור PDP-8, נתמכת... אבל עם פורמט קובץ טקסט חדש. מערכת הקבצים כמעט זהה ל-OS/8, אך התאריכים נרשמים אחרת..."
  5. ^ Doug Jones's DEC PDP-8 FAQs, homepage.cs.uiowa.edu
  6. ^ Latest News on the Date Bug
  7. ^ 7.0 7.1 7.2 7.3 7.4 Janis L. Logan, Applications To The Nines, web.archive.org
  8. ^ 8.0 8.1 8.2 8.3 GPS week roll over April 6th, www.cyber.gov.au.
  9. ^ איי אונליין, מומחי מחשבים: קיים חשש גדול כי בתאריך 9.9.99 תתרחש 'חזרה כללית לקראת באג 2000', באתר TheMarker‏, 16 באוגוסט 1999
  10. ^ 10.0 10.1 עידו גנדל, באג מחשבים, באתר של "רשת 13", 10 בנובמבר 2008 (במקור, מאתר "nana10")
  11. ^ Identifying and Correcting Dates with Two-Digit Years, www.uic.edu
  12. ^ date – write the date and time, pubs.opengroup.org
  13. ^ Manjoo, Farhad. "Unix Tick Tocks to a Billion". Wired (באנגלית אמריקאית). נבדק ב-2022-05-16. "Unix Tick Tocks to a Billion" באתר wired, ‏ 8 בספטמבר 2001
  14. ^ Bank of Queensland hit by “Y2.01k” glitch, CRN Australia
  15. ^ Windows Mobile glitch dates 2010 texts 2016, ‏05-01-2010
  16. ^ Windows Mobile phones suffer Y2K+10 bug | News | TechRadar, web.archive.org, ‏2013-10-23
  17. ^ iTWire - Bank of Queensland vs Y2K – an update, web.archive.org, ‏2010-01-08
  18. ^ Error: 8001050F Takes Down PlayStation Network, Gizmodo (באנגלית אמריקאית)
  19. ^ R. T. L. Newmedia, Bug de l'an 2010 en Allemagne: plus de 20 millions de cartes bancaires inutilisables, RTL Info (בצרפתית)
  20. ^ Taiwan’s Y1C problem | Pinyin News (באנגלית אמריקאית)
  21. ^ Deep Impact: wrong time zone?, web.archive.org, ‏2013-10-02
  22. ^ באג 2017: השנייה הנוספת יצרה פאניקה בשרתים, באתר ynet, 3 בינואר 2017
  23. ^ Saqib Mansoor, WWE 2K20 Refuses To Run In 2020, SegmentNext, ‏2020-01-01 (באנגלית אמריקאית)
  24. ^ Star Wars Jedi: Fallen Order and WWE 2K20 are not launching due to a "2020" bug [UPDATE], DSOGaming, ‏2020-01-01 (באנגלית אמריקאית)
  25. ^ sql - ODBC Connection / Crystal Reports, Stack Overflow
  26. ^ Parking Meters Across NYC Not Accepting Credit Cards, Were Never Programmed To Work In 2020, ‏2020-01-02 (באנגלית אמריקאית)
  27. ^ Y2K20 Parking Meter Software Glitch Causes Citywide SNAFU - Gothamist, web.archive.org, ‏2020-01-04
  28. ^ Patryk Pallus, 3 Sty 20 16:21, Wielka awaria drukarek fiskalnych. Producent naprawia urządzenia, firmy liczą straty, Business Insider, ‏2020-01-03 (בפולנית)
  29. ^ Suunto Spartan Software updates, Suunto (באנגלית בריטית)
  30. ^ Technical Note TN1049 Approaching the Millennium: The Mac and the Year 2000, ‏20-01-2020
  31. ^ Vintage Mac 2020 fixes, www.mactcp.net
  32. ^ Eugene Jeong, Users report an interesting glitch in Samsung's One UI 3.0, but it has an easy fix, Phone Arena (באנגלית אמריקאית)
  33. ^ Update: Mar. 04 Samsung One UI 3.0/3.1 (Android 11) update bugs & issues tracker, PiunikaWeb, ‏2021-03-04
  34. ^ Born, Günter (1 בינואר 2022). "Exchange Year 2022 Problem: FIP-FS Scan Engine failed to load – Can't Convert "2201010001" to long (2022/01/01 00:00 UTC)". Born's Tech and Windows World. נבדק ב-1 בינואר 2022. {{cite web}}: (עזרה)
  35. ^ Martin, Alexander (2 בינואר 2022). "Remember the Y2K bug? Microsoft confirms new Y2K22 issue". Sky News. {{cite web}}: (עזרה)
  36. ^ "Honda Clocks Are Stuck 20 Years In The Past And There Isn't A Fix". Jalopnik (באנגלית אמריקאית). נבדק ב-2022-01-08.
  37. ^ "Shoddy coding has some Honda cars stuck in the year 2002". Engadget (באנגלית אמריקאית). נבדק ב-2022-01-08.
  38. ^ "Big tech warns of 'Japan's millennium bug' ahead of Akihito's abdication". TheGuardian.com. 25 ביולי 2018. {{cite web}}: (עזרה)
  39. ^ "Palm OS® Protein C/C++ Compiler Language & Library Reference" (PDF). נבדק ב-12 באוקטובר 2019. {{cite web}}: (עזרה)
  40. ^ subject:"Re\: Date limited to 2031", www.mail-archive.com
  41. ^ The NTP Era and Era Numbering, www.eecis.udel.edu
  42. ^ W. Richard Stevens, W. Stevens, Bill Fenner, Andrew M. Rudoff, UNIX Network Programming: The sockets networking API, Addison-Wesley Professional, 2004, מסת"ב 978-0-13-141155-5. (באנגלית)
  43. ^ Apple Computer, Inc., Inside Macintosh, Volume II, Addison Wesley, 1985, p. 369
  44. ^ ProDOS 8 Technical Note #28, www.1000bit.it
  45. ^ ProDOS 2.5 Alpha 8, prodos8.com
  46. ^ 46.0 46.1 Server Time Protocol Planning Guide | IBM Redbooks, 2016-09-30. (באנגלית אמריקאית)
  47. ^ SAP note 2258792 (access to SAP Support Portal required), launchpad.support.sap.com
  48. ^ Need a better days between dates function
  49. ^ Y2K problem for days-between-dates for TI-84 series calcs, www.hpmuseum.org (ארכיון)
  50. ^ What happens when you max out the year and set to Dec 31st 11:59 PM? - Animal Crossing: New Leaf, gamefaqs.gamespot.com
  51. ^ "Animal Crossing time travel". IGN. 12 באפריל 2020. נבדק ב-28 באוגוסט 2021. {{cite web}}: (עזרה)
  52. ^ 52.0 52.1 What happens when DS Lite system time and date exceeds 31st December 2099 @ 23:59?, נבדק ב-2021-03-15
  53. ^ 53.0 53.1 אריה סתר, ‏באג 2100 ובאג תתקי"א, באתר "הידען", 28 בספטמבר 2004
  54. ^ time - The Go Programming Language, golang.org
  55. ^ Time series / date functionality — pandas 1.2.3 documentation, pandas.pydata.org
  56. ^ std::chrono::system_clock - cppreference.com, en.cppreference.com
  57. ^ git.qemu.org Git - qemu.git/blob - include/qemu/timer.h, git.qemu.org
  58. ^ In the year 9999...., Chris Hemedinger
  59. ^ The Conversion of Date and Time Values between SAS Data Sets and Microsoft Access Database, SAS 9.4 documentation
  60. ^ o365devx, OlMarkInterval enumeration (Outlook), docs.microsoft.com (באנגלית אמריקאית)
  61. ^ o365devx, Filtering Items Using Query Keywords, docs.microsoft.com (באנגלית אמריקאית)
  62. ^ The Long Now Foundation - Fostering Long-Term Thinking, longnow.org
  63. ^ Forensic Focus, Interpretation of NTFS Timestamps, Forensic Focus, ‏2013-04-06 (באנגלית אמריקאית)
  64. ^ Computer Science MSCS, Twitter Twitter, What Is Delphi Programming?, ThoughtCo (באנגלית)
  65. ^ "Archived copy". אורכב מ-המקור ב-9 בפברואר 2008. נבדק ב-21 בינואר 2008. {{cite web}}: (עזרה); (עזרה)
  66. ^ William Porquet, Project 2038 FAQ, www.deepsky.com, ‏2007-08-15
  67. ^ "Date/Time Conversion Contract Language" (PDF). Office of Information Technology Services, New York (state). 19 במאי 2019. נבדק ב-16 באוקטובר 2020. {{cite web}}: (עזרה)
  68. ^ All the TCP/IP ports that are in a TIME_WAIT status are not closed after 497 days from system startup in Windows Vista, in Windows 7, in Windows Server 2008 and in Windows Server 2008 R2, support.microsoft.com
  69. ^ To keep a Boeing Dreamliner flying, reboot once every 248 days, Engadget (באנגלית אמריקאית)
  70. ^ Gareth Corfield, Boeing 787s must be turned off and on every 51 days to prevent 'misleading data' being shown to pilots, www.theregister.com (באנגלית)


הערך באדיבות ויקיפדיה העברית, קרדיט,
רשימת התורמים
רישיון cc-by-sa 3.0

35908933באגים הקשורים לשעה ותאריך