You get this type of “exit” error when some code calls
_abort(). These calls do not exist in the the Particle deviceOS itself but I have seen these come in with newlib, the C library of standard functions that Particle devices use.
I would look around your code for any calls to the standard C functions, particularly string handling functions (begin with
str) or similar. One of these functions is likely having a fatal exit or abort. This could also be a bad keys situation and the crypto lib is aborting, but I have never seen that happen with this error before.
As to why this particular device and not the others–maybe some string or pointer is empty or has garbage values in emulated EEPROM or the locked DCD region; it’s hard to say.
Maybe dumping the bootloader and DCD flash on the failing device and a good device and then comparing them could show something. There should be differences in the keys and user emulated EEPROM if you are using it, but not elsewhere. In DFU mode:
dfu-util -d 2b04:d00a -a 0 -s 0x8000000:0x100000 -U dump1.bin
Use your favorite hex editor to compare the two dump files–it should be quick.