Stack high-water mark
De minste vrije stackruimte die een taak ooit had, gemeten door de stack te beschilderen en te kijken hoeveel verf eraf is geschuurd.
In een RTOS krijgt elke taak een eigen stack van vaste grootte, en een te kleine stack veroorzaakt storingen die niet te onderscheiden zijn van willekeurige geheugencorruptie. De techniek is eenvoudig: bij het aanmaken wordt de stack gevuld met een bekend patroon (FreeRTOS gebruikt 0xA5), en later telt men hoeveel bytes vanaf de onderkant dat patroon nog bevatten. uxTaskGetStackHighWaterMark() geeft precies dat getal terug.
De marker weerspiegelt alleen codepaden die echt zijn doorlopen. Het ergste interrupt tijdens de diepste aanroepketen is misschien nooit voorgekomen tijdens het testen, dus rekent men marge in of vult men aan met statische analyse zoals -fstack-usage van GCC. Een bewakingsregio van de MPU vangt de overloop op in plaats van de data van een buurtaak te vertrappen, en levert een HardFault op die je tenminste kunt debuggen.