Discovered a situation where the value, uxPendedTicks in tasks.c, can underflow and hang the task switching.
In tasks.c, I added a check for underflow at around line 1413 (following the decrement of uxPendedTicks) as follows:
if (0 != (uxPendedTicks & 0x10000000))
uxPendedTicks = 0; // MAD: THIS SHOULD NOT HAVE HAPPENED!!!
I am not entirely sure WHY this situation occurred.
Am running version 7.6.0 and using the STM M3 core port and the IAR development chain.
My project consists of about 6 tasks of equal priority and very low functionality. The interrupt processing that I am doing does not invoke any FreeRTOS facilities so the ISRs are not using the FreeRTOS stack framing macros.
Due to critical timing (bit pacing for one-wire communications) kernel interrupt priority is set lower (less responsive) than the priorities of my one-wire interrupts.
I initially submitted a ticket on this but was encouraged to submit this as a forum topic for discussion to determine whether this should truly be considered a bug or if I have misapplied something that led to this behavior.
Thanks in advance for any advice in this situation.