This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Application keep restarting after scheduler is not firing more queue events

Hi there devs,

### I UPDATED and reformulate the whole question after some finds ####

I am having an issue with my application which is really hard to replicate it could happens after 12 hours, 8 days, 1 month, 30s... 

My software Diagram:

After some time when the unknown issues happens, the queue get filled then my module resets because the scheduler is out of memory to queue more events

The symtom looks like app_sched_execute() is not being called in the main loop, it makes me believe my code gets stuck on a loop somewhere.

I was digging on my code looking for loops, then I have only 2 loops

1) I made a low Power Delay where I use a loop and sd_app_evt_wait() 

devzone.nordicsemi.com/.../creating-my-own-low-power-delay-using-app_timer

//source FILE

bool LowPowerDelay::delay;

LowPowerDelay::LowPowerDelay()
{
	app_timer_create(&LPDelay, APP_TIMER_MODE_SINGLE_SHOT, &LowPowerDelay::DelayCb);
}

void LowPowerDelay::DelayCb(void *p_context){	
	LowPowerDelay::delay = true;
}

void LowPowerDelay::Delay(uint32_t ms)
{
	LowPowerDelay::delay = false;
	app_timer_start(LPDelay, APP_TIMER_TICKS(ms), NULL);
	
	while (!LowPowerDelay::delay){
			APP_ERROR_CHECK(sd_app_evt_wait());
	}
}


//HEADER

ifndef _LOWPOWERDELAY
#define _LOWPOWERDELAY
#include "Headers.h"
#include "Timer.h"

APP_TIMER_DEF(LPDelay);

class LowPowerDelay
{
	public:
	LowPowerDelay();
	
		static LowPowerDelay * Instance()
		{
			static LowPowerDelay instance;
			return &instance;
		}	
	
	static void DelayCb(void *p_context);
	void Delay(uint32_t ms);
		
	static bool delay;
};
#endif

I used J-Scope to verified my code exits from this delay loop after I used RTT as well, then the issue is not here.

2) When perform TWI Write and Reads I have another loop where I wait for the transfer ends

void Twi::WaitForTransfer()
{
	while (Twi::GetInstance()->transferComplete)
	{	
	if(NRF_LOG_PROCESS() == false){     
			APP_ERROR_CHECK(sd_app_evt_wait());
		}
	}
}

now I am aiming the root of my issue could be the TWI loop, but I cant no replicate it, because randomly happens, for example after my device working after 26 hours it is ok at the moment

3) when the issue happens and the queue gets totally filled it  generate an error out of memory, app_error_fault_handler is called then calling  NVIC_SystemReset() after this software reset, the module restarts then the queue gets filled since the beginning generating another software reset and keep resetting because the queue get filled again, and again (please look my RTT log below in the replies)

software reset wont solves it

hardware reset solves it temporally until this unknown behavior happens again, and again

When the issue happens, the neither BLE or TWI sensor works because both depend on the scheduler for my application

Possible causes:

a) TWI hangs and wont fire a handler event with TX or RX (TWI IRQs disabled because the frequency initialization/uninitialization?)

b) External Module unresponsive (?)

Details:

Queue Size 80

SCHED_MAX_EVENT_DATA_SIZE = BLE_STACK_EVT_MSG_BUF_SIZE + 247 (MTU)

SDK 13, nRF52832

Regards,

Meli

Parents
  • Below log using RTT where I call app_sched_event_put() every 1 second

    The output starts with ModuleStarts, when I initialize my module,

    QueueSize the Queue size just after calling app_sched_event_put

    QueueEvent when the queue is proceeded 

    Then when I start receive errors at app_sched_event_put

    The messages are 

    app_sched_queue_utilization_get(), Error code from app_sched_event_put(), and timelife in seconds from my app

     it shows the queue utilization after some time starts to increase and return error until my device restarts, how can I solve it?

    # SEGGER J-Link RTT Viewer V6.44h Terminal Log File
    # Compiled: 17:39:12 on May  3 2019
    # Logging started @ 14 Jul 2020 15:36:44
    00> ModuleStarts!!
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> QueueSize[3] 
    00> QueueSize[4] 
    00> QueueSize[5] 
    00> QueueSize[6] 
    00> QueueSize[7] 
    00> QueueSize[8] 
    00> QueueSize[9] 
    00> QueueSize[10] 
    00> QueueSize[11] 
    00> QueueSize[12] 
    00> QueueSize[13] 
    00> QueueSize[14] 
    00> QueueSize[15] 
    00> QueueSize[16] 
    00> QueueSize[17] 
    00> QueueSize[18] 
    00> QueueSize[19] 
    00> QueueSize[20] 
    00> QueueSize[21] 
    00> QueueSize[22] 
    00> QueueSize[23] 
    00> QueueSize[24] 
    00> QueueSize[25] 
    00> QueueSize[26] 
    00> QueueSize[27] 
    00> QueueSize[28] 
    00> QueueSize[29] 
    00> QueueSize[30] 
    00> QueueSize[31] 
    00> QueueSize[32] 
    00> QueueSize[33] 
    00> QueueSize[34] 
    00> QueueSize[35] 
    00> QueueSize[36] 
    00> QueueSize[37] 
    00> QueueSize[38] 
    00> QueueSize[39] 
    00> QueueSize[40] 
    00> QueueSize[41] 
    00> QueueSize[42] 
    00> QueueSize[43] 
    00> QueueSize[44] 
    00> QueueSize[45] 
    00> QueueSize[46] 
    00> QueueSize[47] 
    00> QueueSize[48] 
    00> QueueSize[49] 
    00> QueueSize[50] 
    00> QueueSize[51] 
    00> QueueSize[52] 
    00> QueueSize[53] 
    00> QueueSize[54] 
    00> QueueSize[55] 
    00> QueueSize[56] 
    00> QueueSize[57] 
    00> QueueSize[58] 
    00> QueueSize[59] 
    00> QueueSize[60] 
    00> QueueSize[61] 
    00> QueueSize[62] 
    00> QueueSize[63] 
    00> QueueSize[64] 
    00> QueueSize[65] 
    00> QueueSize[66] 
    00> QueueSize[67] 
    00> QueueSize[68] 
    00> QueueSize[69] 
    00> QueueSize[70] 
    00> QueueSize[71] 
    00> QueueSize[72] 
    00> QueueSize[73] 
    00> QueueSize[74] 
    00> QueueSize[75] 
    00> QueueSize[76] 
    00> QueueSize[77] 
    00> QueueSize[78] 
    00> QueueSize[79] 
    00> QueueSize[80] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[176] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[177]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[178] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[179] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[180] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[181] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[182]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[183]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[184] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[185]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[186] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[187]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[188]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[189]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[190]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[191]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[192]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[193]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[194]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[195]
    00> ModuleStarts!!		/// MODULE RESTARTED
    00> QueueSize[1] 
    00> QueueSize[2] 
    00> QueueSize[3] 
    00> QueueSize[4] 
    00> QueueSize[5] 
    00> QueueSize[6] 
    00> QueueSize[7] 
    00> QueueSize[8] 
    00> QueueSize[9] 
    00> QueueSize[10] 
    00> QueueSize[11] 
    00> QueueSize[12] 
    00> QueueSize[13] 
    00> QueueSize[14] 
    00> QueueSize[15] 
    00> QueueSize[16] 
    00> QueueSize[17] 
    00> QueueSize[18] 
    00> QueueSize[19] 
    00> QueueSize[20] 
    00> QueueSize[21] 
    00> QueueSize[22] 
    00> QueueSize[23] 
    00> QueueSize[24] 
    00> QueueSize[25] 
    00> QueueSize[26] 
    00> QueueSize[27] 
    00> QueueSize[28] 
    00> QueueSize[29] 
    00> QueueSize[30] 
    00> QueueSize[31] 
    00> QueueSize[32] 
    00> QueueSize[33] 
    00> QueueSize[34] 
    00> QueueSize[35] 
    00> QueueSize[36] 
    00> QueueSize[37] 
    00> QueueSize[38] 
    00> QueueSize[39] 
    00> QueueSize[40] 
    00> QueueSize[41] 
    00> QueueSize[42] 
    00> QueueSize[43] 
    00> QueueSize[44] 
    00> QueueSize[45] 
    00> QueueSize[46] 
    00> QueueSize[47] 
    00> QueueSize[48] 
    00> QueueSize[49] 
    00> QueueSize[50] 
    00> QueueSize[51] 
    00> QueueSize[52] 
    00> QueueSize[53] 
    00> QueueSize[54] 
    00> QueueSize[55] 
    00> QueueSize[56] 
    00> QueueSize[57] 
    00> QueueSize[58] 
    00> QueueSize[59] 
    00> QueueSize[60] 
    00> QueueSize[62] 
    00> QueueSize[63] 
    00> QueueSize[64] 
    00> QueueSize[65] 
    00> QueueSize[66] 
    00> QueueSize[67] 
    00> QueueSize[68] 
    00> QueueSize[69] 
    00> QueueSize[70] 
    00> QueueSize[71] 
    00> QueueSize[72] 
    00> QueueSize[73] 
    00> QueueSize[74] 
    00> QueueSize[75] 
    00> QueueSize[76] 
    00> QueueSize[77] 
    00> QueueSize[78] 
    00> QueueSize[79] 
    00> QueueSize[80] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[81]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[82]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[83] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[84]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[85] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[86] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[87]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[88]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[89]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[90]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[91]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[92]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[93]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[94]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[95]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[96]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[97]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[98]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[99]
    00> ModuleStarts!!		/// MODULE RESTARTED
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[1] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> 	QueueEvent!! 
    00> QueueSize[2] 
    00> QueueSize[3] 
    00> QueueSize[4] 
    00> QueueSize[5] 
    00> QueueSize[6] 
    00> QueueSize[7] 
    00> QueueSize[8] 
    00> QueueSize[9] 
    00> QueueSize[10] 
    00> QueueSize[11] 
    00> QueueSize[12] 
    00> QueueSize[13] 
    00> QueueSize[14] 
    00> QueueSize[15] 
    00> QueueSize[16] 
    00> QueueSize[17] 
    00> QueueSize[18] 
    00> QueueSize[19] 
    00> QueueSize[20] 
    00> QueueSize[21] 
    00> QueueSize[22] 
    00> QueueSize[23] 
    00> QueueSize[24] 
    00> QueueSize[25] 
    00> QueueSize[26] 
    00> QueueSize[27] 
    00> QueueSize[28] 
    00> QueueSize[29] 
    00> QueueSize[30] 
    00> QueueSize[31] 
    00> QueueSize[32] 
    00> QueueSize[33] 
    00> QueueSize[34] 
    00> QueueSize[35] 
    00> QueueSize[36] 
    00> QueueSize[37] 
    00> QueueSize[38] 
    00> QueueSize[39] 
    00> QueueSize[40] 
    00> QueueSize[41] 
    00> QueueSize[42] 
    00> QueueSize[43] 
    00> QueueSize[44] 
    00> QueueSize[45] 
    00> QueueSize[46] 
    00> QueueSize[47] 
    00> QueueSize[48] 
    00> QueueSize[49] 
    00> QueueSize[50] 
    00> QueueSize[51] 
    00> QueueSize[52] 
    00> QueueSize[53] 
    00> QueueSize[54] 
    00> QueueSize[55] 
    00> QueueSize[56] 
    00> QueueSize[57] 
    00> QueueSize[58] 
    00> QueueSize[59] 
    00> QueueSize[60] 
    00> QueueSize[61] 
    00> QueueSize[62] 
    00> QueueSize[63] 
    00> QueueSize[64] 
    00> QueueSize[65] 
    00> QueueSize[66] 
    00> QueueSize[67] 
    00> QueueSize[68] 
    00> QueueSize[69] 
    00> QueueSize[70] 
    00> QueueSize[71] 
    00> QueueSize[72] 
    00> QueueSize[73] 
    00> QueueSize[74] 
    00> QueueSize[75] 
    00> QueueSize[76] 
    00> QueueSize[77] 
    00> QueueSize[78] 
    00> QueueSize[79] 
    00> QueueSize[80] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[141] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[142]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[143] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[144] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[145]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[146] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[147] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[148]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[149]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[150] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[151]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[152]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[153] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[154] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[155] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[156] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[157] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[158] 
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[159]
    00> QueueSize[80] | app_sched_event_put ERROR  [4] | Lifetime[160] 
    00> ModuleStarts!!		/// MODULE RESTARTED

    what can cause that the scheduler event/queue event wont fire anymore?

  • MeliodasD said:
    what can cause that the scheduler event/queue event wont fire anymore?
    •  Deadlock caused by a race condition with a dependency of a flag
    • corrupt stack
    • driver being stuck and not releasing loop

    It is hard to say at this point. What is the state of the context the CPU is executing when the scheduler seems stuck. Can you try increasing the scheduler queue size? 

  • Hey Meliodas, I've taken your case while Susheel is on vacation.

    Why do you use TWI in polling mode when it will trigger an event when it's done anyways?

  • Hi I am not using TWI pooling, I just wait for a NRF_DRV_TWI_EVT_DONE or any other event to exit from the loop before call the next TWI write/read. recently I added a timeout when entering in the loop, which I am not sure if it is working yet because the issue I am having is pretty hard to replicate

  • Do you have any logs from the TWI driver? 

    I find it strange that you're able to schedule new events if you're still locked inside the previous one. 

    I'm going on vacation for a week, but I'll assign your case to another Tech Supporter.

    BR,

    Håkon HoldhusI

  • the schedule is able to add more events to the queue, because it is called periodically from a timer IRQ. since I made the modification above, I haven't present the issue yet. but I am not sure if it is solved yet

  • Maybe you were experiencing a blocked I2C bus (https://www.i2c-bus.org/i2c-primer/analysing-obscure-problems/blocked-bus/)? This would help explain why the device didn't recover after a soft reset.

Reply Children
No Data
Related