לקוח דיוח לי היום שהמערכת שלי מדווחת תאריך נכון, אבל לשנת 2009 במקום 2008 .אחרי בדיקה בלוגים ראיתי שלא בכל מקום מופיע 2009. החשד הראשון נפל על libc, אשר איכשהו עדכנה את השנה לא נכון למערכת, אבל בפועל התאריך והשעה היו נכונים לגמרי.
גם בעיה בlibc לא מצליחה להסביר למה התאריך של הלוג נכון התאריך של המערכת הוא נכון רק התאריך של הדיוח שלהם הוא לא. אז נכנסתי לקוד של הדיווח שלי, והתחלתי לקרוא עוד פעם באמצעות man date את הפורמט של strftime. מסתבר שהזנתי לשנה את %g כאשר הייתי צריך להזין את %y.
עכשיו נשאלת השאלה מה ההבדל בניהם ? ובכן %y מחזיר את השנה של היום. הפורמט של %g מחזיר את השנה של השבוע. וכאמור מחר זה ה1/1/2009 ולכן הוא החזיר את 09 בתוצאה.
אז כאשר אתם עובדים עם strftime שימו לב לבעית כאלו, כי זה יכול להיות קטלני מאוד, למרות שזה באג מאוד דפוק. אבל החדשות הטובות הם שעלו על זה מאוד מוקדם, ויותר מזה, זה הבאג הראשון שמתגלה אצלי מאז שהמערכת נכנסה לבדיקות, והיא כבר קרוב לחצי שנה נמצאת בכלל ב production. הבעיה היא שהבאג הקטן הזה, משפיע על משכורות ועבודה של אנשים, ולכן אי אפשר לשמוח שזה הבאג היחיד שנמצא לי במערכת עד היום.