Stack painting
Riempire lo stack con un valore noto all'avvio e controllare poi quanta parte del valore è stata sovrascritta.
Un microcontrollore privo di MMU non ha pagine di guardia che segnalino una crescita eccessiva dello stack: semplicemente sovrascrive ciò che si trova accanto. Quanto debba essere grande uno stack raramente si può calcolare in anticipo, perché interruzioni, ricorsione e chiamate di libreria aggiungono una profondità che nessuno ha messo per iscritto. Quindi si misura.
Il codice di avvio «dipinge» ogni stack con un pattern — FreeRTOS usa il byte 0xA5, altri preferiscono 0xDEADBEEF — e dopo che il sistema è rimasto in funzione per un po' si scorre dal fondo verso l'alto fino alla prima parola modificata. Quella distanza è l'high-water mark, la massima profondità mai raggiunta dallo stack. FreeRTOS la espone con uxTaskGetStackHighWaterMark(). Descrive però solo ciò che è accaduto durante il test, non il caso peggiore, perciò in seguito si aggiunge un margine, di solito con un sospiro.