לדלג לתוכן

פרויקט חקירת שני סוגי דליפה

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

עובדים בזוגות. הבונה מכין את fixture שמופיעה בפתרון ומוסר לחוקר binaries, symbols, build ID ופקודת הרצה. החוקר מתחיל בלי מקור ובלי תיאור הסיבות. לאחר שהגיש השערה וראיות הוא מקבל את המקור ומבצע תיקון. בלימוד עצמאי אפשר להתחיל מהבינארי ולדחות את קריאת הפתרון עד אחרי איסוף הראיות.

התוכנית מוגבלת ל500 מחזורים ומסתיימת בעצמה. מריצים אותה בVM של המעבדה. אוספים handle count, מידע heap מנוהל וtrace או dump מתאים בזמן שהאובייקטים עדיין חיים. מגדירים מראש איזה מדד מתייחס למשאבי קרנל ואיזה לזיכרון managed.

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

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

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