Jump to content
החלפת מצב תפריט
שינוי מצב תפריט ההעדפות
החלפת מצב תפריט אישי
לא בחשבון
כתובת ה־IP שלך תהיה גלויה לציבור אם תעשה עריכות כלשהן.

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

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

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

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

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

באג 1970 עריכה

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

באג 1975 עריכה

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

באג 1978 עריכה

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

  • 4 ביטים לחודש.
  • 5 ביטים לתאריך שבו.
  • 3 ביטים לשנה, כלומר מתמיכה בעד 8 (2 בחזקת 3) שנים (החל משנת 1970).[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 עריכה

קובץ:Bug de l'an 2000.jpg
לוח אלקטרוני בצרפת, שהוצג בכניסה לבית ספר בנאנט. כתוצאה מבאג 2000, הלוח הראה את התאריך "3 בינואר 1900".
קובץ:Postscript-viewer-blue.svg ערך מורחב – באג 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 עריכה

קובץ:Postscript-viewer-blue.svg ערך מורחב – באג 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 לערך.

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

קובץ:Postscript-viewer-blue.svg ערך מורחב – באג תקופת לוח השנה היפני

ב-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, מפני ש-<math>2^{31}=2147483648 </math>. מספרי העדכון של רכיבי סריקת תוכנות זדוניות של 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 עריכה

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

קובץ:Postscript-viewer-blue.svg ערך מורחב – באג 2038

מערכות יוניקס המקוריות מותאמות למחשבי 32 ביט, ומונה הזמן בהן הוא מספר מסומן (כלומר חיובי או שלילי) שבו רק 31 ביטים מיועדים למנייה וביט אחד לסימן. המונה סופר שניות מ-1 בינואר 1970 בחצות, והוא יגלוש כשיגיע ל-2,147,483,647 ב-19 בינואר 2038. מרגע זה הוא יהפוך סימן ויתחיל למנות מ--2,147,483,648 המייצג את 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 עריכה

קובץ:Postscript-viewer-blue.svg ערך מורחב – בעיית שנה מעוברת

מערכות 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 (ב־English)
  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. ^ 1 2 3 4 5 Janis L. Logan, Applications To The Nines, web.archive.org
  8. ^ 1 2 3 4 GPS week roll over April 6th, www.cyber.gov.au.
  9. ^ איי אונליין, מומחי מחשבים: קיים חשש גדול כי בתאריך 9.9.99 תתרחש 'חזרה כללית לקראת באג 2000', באתר TheMarker‏, 16 באוגוסט 1999
  10. ^ 1 2 עידו גנדל, באג מחשבים, באתר nana10‏, 10 בנובמבר 2008
  11. ^ Identifying and Correcting Dates with Two-Digit Years, www.uic.edu
  12. ^ date – write the date and time, pubs.opengroup.org
  13. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value). "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 (ב־English)
  19. ^ R. T. L. Newmedia, Bug de l'an 2010 en Allemagne: plus de 20 millions de cartes bancaires inutilisables, RTL Info (ב־français)
  20. ^ Taiwan’s Y1C problem | Pinyin News (ב־English)
  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 (ב־English)
  24. ^ Star Wars Jedi: Fallen Order and WWE 2K20 are not launching due to a "2020" bug [UPDATE], DSOGaming, ‏2020-01-01 (ב־English)
  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 (ב־English)
  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 (ב־polski)
  29. ^ Suunto Spartan Software updates, Suunto (ב־English)
  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 (ב־English)
  33. ^ Update: Mar. 04 Samsung One UI 3.0/3.1 (Android 11) update bugs & issues tracker, PiunikaWeb, ‏2021-03-04
  34. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  35. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  36. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  37. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  38. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  39. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  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, ISBN 978-0-13-141155-5. (בEnglish)
  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. ^ 1 2 Server Time Protocol Planning Guide | IBM Redbooks, 2016-09-30. (בen-US)
  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. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  52. ^ 1 2 שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  53. ^ 1 2 אריה סתר, ‏באג 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 (ב־English)
  61. ^ o365devx, Filtering Items Using Query Keywords, docs.microsoft.com (ב־English)
  62. ^ The Long Now Foundation - Fostering Long-Term Thinking, longnow.org
  63. ^ Forensic Focus, Interpretation of NTFS Timestamps, Forensic Focus, ‏2013-04-06 (ב־English)
  64. ^ Computer Science MSCS, Twitter Twitter, What Is Delphi Programming?, ThoughtCo (ב־English)
  65. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  66. ^ William Porquet, Project 2038 FAQ, www.deepsky.com, ‏2007-08-15
  67. ^ שגיאת לואה ביחידה יחידה:Citation/CS1/Configuration בשורה 1739<includeonly></includeonly>: attempt to index field '?' (a nil value).
  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 (ב־English)
  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 (ב־English)


תוכן עניינים