1.1.0-rc.1 on Argon and Xenon causes Assertion Failure upon wakeup

I have a fairly simply application that runs the system in the background thread and wakes up for two hours twice per day. My application is running ok on v0.9.0. I recently upgraded a few devices to 1.1.0-rc-1 and I am able to reproduce assertion error on most Argons and Xenons running the OS version with my application.

Steps to reproduce:

  • System is up and connected
  • LED pulses cyan
  • Request Sleep (remote function or button triggered)
  • Wake up pressing reset button
  • LED immediately shows SOS with 10 flashes (Assertion Failure)
  • Unresponsive to reset, listen mode, safe mode, etc
  • Power Cycle will recover it

Listening mode or button reset does not cause the same issue so it seems sleep is causing the state.

Workaround- Revert to 0.9.0.

I was able to reproduce on an Argon with the following simplified code:

bool goToSleepTrigger = false; //manual trigger for sleep mode

void setup() {
    Particle.function("sleep",sleepTime);

    System.on(button_click, [](system_event_t ev, int clicks)->void {
       	sleepTime("button");
    });
    
}

void loop() {
    if(goToSleepTrigger){
        System.sleep({D0}, FALLING, 60);
    }
}

int sleepTime(String extra){
    goToSleepTrigger = true;
    return 0;
}

able to reproduce on 1.2.0-beta.1.

Any insight about how to revert the Argon back to 0.9.0 is appreciated. I tried to flash the hybrid using the cli:

particle flash --usb ~/Downloads/hybrid-0.9.0-argon.bin 

Flash success!

This seemed to work (flashed magenta for some time), but the version did not downgrade to 0.9.0.

I have other Argons I can use and I can put this one aside, but it would be nice to know how to downgrade if possible.

You are using stop sleep which will pick up action after wake in the next line following the sleep call. Consequently your code would immediately enter sleep again since you don’t reset your sleep flag.

While this should still not cause an Assertion Failure panic it’s definetly a flaw in the logic.

You should first flash a 0.9.0 targetted application and I’d rather flash the system part1 binary than hybrid.

1 Like

I confirm that this assertion failure error happens also on Boron LTE, firmware 1.1.0.rc-1
Reverting back to 0.9.0 makes the issue go away.
@schooltag you can open an issue on github or I can do it on your behalf.

1 Like

thanks for confirming @jaafar . I’d appreciate your help in filing the issue. Thanks.

Good point @ScruffR . My main application does exactly as you speak, I just pulled out this flawed excerpt and never noticed the problem because I reproduced the SOS. The code demonstrated what was intended, but you are a good community debugger indeed.

Thanks also for the application flashback tip. Will do.

2 Likes

It appears this bug has been fixed in the latest release.

The bug is part of the 1.1.0-rc2 milestone and there is now a 1.1.0-rc2 release. The release notes, however, don’t mention it in the bug fix section.

I will report back when I find the time to test the new release.

2 Likes