לדלג לתוכן

פתרון ראסט בסביבת הקרנל

פתרון ראשון

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

פתרון שני

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

פתרון שלישי

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

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