Ql_Send_Message() fails if certain operation takes too long?

Hi, I am using following quectel tools/modules,
Module: BC66 (NB-IoT)
SDK: BC66-QuecOpen Solution (BC66_QuecOpen_NB1_SDK_V1.6)

I have made a program that does the following, for connection establishment, read data from an external device via UART.

It starts executing the task, after powering on or rtc waking up.
read some data from the external device via UART,
connect to the network and send data,
then update rtc for next wake, and go to sleep.

It was a simple program and was working fine Until i needed to change something.
All i needed to change was the extended read operations. Earlier Read operations was taking few seconds, now it can last up to 3-5 minutes.
Read operation was done in Op_1(). Inside the read operations there are delays, read wait for 2 seconds, then read. I tried delays with both Ql_delay_ms(), and via ticks.

Issue: Now when op_1 is completed, it sends Ql_OS_message() to to go to next task. Earlier it was working fine, now this Ql_OS_Message() return 12, always 12. and then of course nothing happens.
I tried this sending message in loop, but after ~5 minutes of trying (with return 12), it resets the module (SYS_Reset).

I did some hit and trial with this and found out that if any operation takes more than 30 seconds, this sending message fails. However, if I do it in 20-25 seconds, it succeeds without any error (return 0)
Please if anyone can help me what is this behavior, I read documents and went through its system config files but there is no mention of something like this.
I did find in the task definitions this of config files,

TASK_ITEM(proc_main_task, main_task_id, 10*1024, DEFAULT_VALUE1, DEFAULT_VALUE2) //main task

And it was not mentioned what DEFAULT_VALUEx is, but value 2 happens to be the 30s, so I thought maybe changing this can change the interval, so I tried it with 60s, but nothing changed. Maybe they have nothing to do with my issue or if they do I’m not doing it right.
Any suggestion or link to the document or possible solution to this is highly appreciated.

I can’t post all the code here, but my code structure is like this.

void main_task(s32 taskId) {
	initialization();
	while(true) {
		Ql_OS_GetMessage(&msg);
		switch() {
			case MSG_ID_RIL_READY:	// On resets or Power Up
				do_op_0();
				break;

			case MSG_ID_URC_INDICATION:
				do_op_URC_handling();
				break;

			case MSG_ID_OP_1: 	// On RTC Wakeup, or called from op_0.
				do_op_1();
				break;

			case MSG_ID_OP_2:	// Randome Operation always called after op_1
				do_op_2();
				break;
			default:
				break;
		}
	}
}

void do_op_0() {
	// re Initialization
	// ..............
	// Operation End
	u8 retr = Ql_OS_SendMessage(main_task_id, MSG_ID_OP_1, 0, 0);
}

void do_op_1() {
	// Operation Start
	// ..............
	// Operation End
	u8 retr = Ql_OS_SendMessage(main_task_id, MSG_ID_OP_2, 0, 0);
}

void do_op_2() {
	// Operation Start
	// ..............
	// Operation 
	rtc_update(); // For next wake up
	sleep();
}

@ herbert.pan-QSupport

If you are an enterprise user, please contact sales and solve all your problems by ticket. I am not good at solving openCPU problems

ok, i’ll contact via respective channel.
thanks