Photon LED solid green

Question - is there any further understanding of what causes a solid green LED. Using device OS 2.3.1 on a photon with an application with a software watchdog, system thread enabled and system mode semi-automatic. With one type of product we are seeing more of these situations occur. The only way to recover appears to be re-powering the Photon. The watchdog isn't getting engaged.

Solid colors never occur by design. They occur when the device locks up, typically with interrupts disabled, so the RGB LED cannot be updated. It's only green because that's the last color it was before the MCU locked up.

It can be caused by deadlock where one thread had a mutex and thread swapping enabled, and another thread attempts to obtain the same mutex with interrupts or thread swapping disabled.

It can also occur by infinitely looping in an ISR, code that disables but never enables interrupts or thread swapping.

Less commonly a power issue (brownout) could cause this.

The application watchdog on Gen 2 devices will not recover from any of these conditions since the application watchdog relies on a thread swap occurring.

@rickkas7 Thanks for this comprehensive reply.

So this is likely to be SPI (on the application thread) together with WiFi stack glitch on the system thread?

I have checked all access to SPI and all the ones I can find implement the beginTransaction and endTransaction and I2C uses WITH_LOCK around transactions. Anything else I could scan for and engineer out?