לדלג לתוכן

תרגול חקירה והגנת תכנון

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

מממשים אובייקט נפרד לכל ניסיון ומעבירים completion לפי מזהה שנלכד בזמן submit. מוסיפים timeout, בקשת cancel והשלמה מאוחרת. בודקים ששום תוצאה אינה עוברת לעבודה אחרת ושכל ניסיון מפונה פעם אחת.

מוסרים לחבר ללימוד שתי חבילות ראיות: אחת מהבאג הזה ואחת מכשל serialization. מסתירים את שם התקלה אבל משאירים build ID, קלט ופקודות שחזור. מחליפים חבילות ומגישים חקירה עם שני הסברים ראשוניים לפחות.

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