This isn’t a rare event. Both of my Photons exhibit this problem. Both use SYSTEM_THREAD(ENABLED) and both lock up user code. Symptom is rapid flashing green with the user thread not running. A single push of the reset button or power cycle and the device immediately reconnects and runs correctly.
I added code to both programs to detect loss of WiFi and/or not connected to the Particle cloud for 30 seconds and to issue a System.reset(). This sometimes works, but if the user code stops executing then even this fallback is useless. Where the old code without the reset() would fail every two or three days, the new code with reset() fails about once a week. I have no way of knowing how often my reset logic is correctly restarting but I suspect a couple of times per week.
This issue has been happening since I switched from the old Core to the Photon. My Cores continue to execute flawlessly and are very robust. The Photons I consider to be fragile and unreliable, and without any more Cores to fall back on my Particle development has been halted, at least until this is fixed. Sorry.