How to debug SOS Assertion Failure

We have a stable firmware that’s been running fine for months on dozens of devices. But the same firmware is now ending up in SOS on newly flashed devices (but from the same manufacturing run). It goes into SOS moments after Particle.connect() and seems to fix if we remove any 2 out of 4 Particle.function calls before it.

Any ideas on how to get to the bottom of this ?

  • Device is in SEMI_AUTOMATIC mode
  • Device OS : v2.0.1
  • The system thread is enabled.
  • There are 27968 bytes of free memory before Particle.connect() call and we don’t see any out_of_memory events.

@brahma-dev, do all your Particle.functions have an integer return value? Not returning a value is a typical case for assertion failures.

1 Like

There are 4 functions and disabling any 2 of them makes the SOS go away. So it’s not the specific functions. And just to be clear, the same thing with all 4 of them is running fine on other devices.

@brahma-dev, I see. However, the questions still stands - do you have return values in all your Particle.funcions?

Yes. It happens even if the function is simply return 1;

But just for understanding why would you think that would only cause problem when there are 4 and not with 2.

Another insight is that if we kill the wifi, the SOS doesn’t happen on boot but whenever the wifi comes back.

@brahma-dev, I think this call for a support ticket.

1 Like