reason for watchdog trigger.

kishan patel
Posts: 45
Joined: Wed Aug 30, 2017 4:56 am

reason for watchdog trigger.

Postby kishan patel » Tue Dec 12, 2017 7:15 am

Hello,
I have some querry about watchdog.
I have using esp-wroom-32 and sometimes i got that my system is hang-up.
When i have checking debug print,i find something as below:

Task watchdog got triggered. The following tasks did not feed the watchdog in time:
Tasks currently running:
CPU 0: main

So,when this type of debug occur.
How can i solved that?
Please,tell me if any issue or any configuration steps required.

f.h-f.s.
Posts: 214
Joined: Thu Dec 08, 2016 2:53 pm

Re: reason for watchdog trigger.

Postby f.h-f.s. » Tue Dec 12, 2017 2:23 pm

Can you post your main task?
Probably your app_main()

kishan patel
Posts: 45
Joined: Wed Aug 30, 2017 4:56 am

Re: reason for watchdog trigger.

Postby kishan patel » Wed Dec 13, 2017 5:13 am

Thanks for reply,
I can send main task.But it is around 2000 lines.So,i am tell process what i have doing.

Initialize all thing before doing any process.
Initialize uart,
Initialize PWM for buzzer,
Initialize wifi,
Initialize ble,
Initialize timer,
Initialize ADC.

I have get some data and send to the server.

In which process you think about WATCHDOG issue,i will send code for that thing like as any wrong to initialize or something.

chegewara
Posts: 2358
Joined: Wed Jun 14, 2017 9:00 pm

Re: reason for watchdog trigger.

Postby chegewara » Wed Dec 13, 2017 6:54 am

This is what i would do:
- spread ESP_LOG every few lines to find out approximatly where this watchdog occurs
- then find exactly line that causing watchdog triggering

Its some work with 2000 lines but in 1-2 hours you can find it out

kishan patel
Posts: 45
Joined: Wed Aug 30, 2017 4:56 am

Re: reason for watchdog trigger.

Postby kishan patel » Wed Dec 13, 2017 7:35 am

I am sending log.
Please check it.

[0;32mI (6580427) WIFI >> DEBUG-PRINT: Connected to AP[0m
[0;32mI (6580433) WIFI >> DEBUG-PRINT: DNS lookup succeeded. IP=13.58.4.12[0m
[0;32mI (6580440) WIFI >> DEBUG-PRINT:
socket_id = 0
[0m
[0;32mI (6580445) WIFI >> DEBUG-PRINT: ... allocated socket

[0m
I (6581101) wifi: active cnt: 16
[0;32mI (6581486) WIFI >> DEBUG-PRINT: ... connected[0m
[0;32mI (6581488) WIFI >> DEBUG-PRINT: ... socket send success[0m
ets Jun 8 2016 00:22:57

rst:0x8 (TG1WDT_SYS_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0010,len:4
load:0x3fff0014,len:4252
load:0x40078000,len:0
load:0x40078000,len:11016
entry 0x40078be8
[0;33mW (89) boot: PRO CPU has been reset by WDT.[0m
[0;33mW (89) boot: WDT reset info: PRO CPU PC=0x400884ed[0m
[0;33mW (90) boot: WDT reset info: APP CPU PC=0xd7fdbefa[0m
[0;32mI (1132) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (1132) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM[0m
[0;32mI (1139) heap_init: At 3FFD2170 len 0000DE90 (55 KiB): DRAM[0m
[0;32mI (1158) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM[0m
[0;32mI (1178) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM[0m
[0;32mI (1198) heap_init: At 40094708 len 0000B8F8 (46 KiB): IRAM[0m
[0;31mE (1257) MAIN >> DEBUG-PRINT:
...................TASK INVALID...................
[0m
E (1257) wifi: esp_wifi_stop 801 wifi is not init
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0010,len:4
load:0x3fff0014,len:4252
load:0x40078000,len:0
load:0x40078000,len:11016
entry 0x40078be8
[0;32mI (1068) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (1069) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM[0m
[0;32mI (1075) heap_init: At 3FFD2170 len 0000DE90 (55 KiB): DRAM[0m
[0;32mI (1095) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM[0m
[0;32mI (1114) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM[0m
[0;32mI (1134) heap_init: At 40094708 len 0000B8F8 (46 KiB): IRAM[0m
[0;31mE (1193) MAIN >> DEBUG-PRINT:
...................TASK SOFTWARE_RESET...................
[0m
[0;32mI (1194) MAIN >> DEBUG-PRINT:
after software reset
car_battery_voltage = 0.000000
[0m
ets Jun 8 2016 00:22:57

rst:0x5 (DEEPSLEEP_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0010,len:4
load:0x3fff0014,len:4252
load:0x40078000,len:0
load:0x40078000,len:11016
entry 0x40078be8
[0;32mI (1069) heap_init: Initializing. RAM available for dynamic allocation:[0m
[0;32mI (1069) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM[0m
[0;32mI (1076) heap_init: At 3FFD2170 len 0000DE90 (55 KiB): DRAM[0m
[0;32mI (1095) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM[0m
[0;32mI (1115) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM[0m
[0;32mI (1135) heap_init: At 40094708 len 0000B8F8 (46 KiB): IRAM[0m
[0;31mE (1194) MAIN >> DEBUG-PRINT:
...................TASK DEEP_SLEEP_RESET...................
[0m
[0;31mE (2495) MAIN >> DEBUG-PRINT:
...................TASK POWER_ON_RESET...................
[0m
[0;33mW (2495) MAIN >> DEBUG-PRINT:
going for board initialization

Here when sending data to server,system was reset.

kishan patel
Posts: 45
Joined: Wed Aug 30, 2017 4:56 am

Re: reason for watchdog trigger.

Postby kishan patel » Wed Dec 13, 2017 7:51 am

You can also see the code for sending data to the server.
I think there are some issue.
Here,i have using select function for time_out purpose because read function is blockable.

Code: Select all

void wifi_send_data_kt(char *wifi_data_send)
{
	
	const struct addrinfo hints = {
		.ai_family = AF_INET,
		.ai_socktype = SOCK_STREAM,
	};
	struct addrinfo *res;
	struct in_addr *addr;
	
	int s;
	
	
	fd_set readfds;
	struct timeval tv;
	
	int rv, n;	
	
	char recv_buf[550];
	memset(response_buffer,'\0',strlen(response_buffer));
	
	xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT,false, true, 6000 / portTICK_PERIOD_MS);
	
	#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_LINK_STATUS)
	ESP_LOGI(Display, "Connected to AP");
	#endif

	int err = getaddrinfo(WEB_SERVER,WEB_PORT, &hints, &res);

	if(err == 0 || res != NULL)
	{
		addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr;
		
		#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
		ESP_LOGI(Display, "DNS lookup succeeded. IP=%s", inet_ntoa(*addr));
		#endif

		s = socket(res->ai_family, res->ai_socktype, 0);
		
		#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
		ESP_LOGI(Display,"\nsocket_id = %d\n",s);
		#endif

		if(s >= 0) 
		{		

			FD_ZERO(&readfds);
			FD_SET(s, &readfds);
			n = s + 1;
			
			tv.tv_sec = 2;
			tv.tv_usec = 000000;
	
			#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
			ESP_LOGI(Display, "... allocated socket\r\n");
			#endif
			
			if(connect(s, res->ai_addr, res->ai_addrlen) == 0)
			{
				
				//flags = fcntl(s, F_GETFL, 0); 
				//fcntl(s, F_SETFL, flags | O_NONBLOCK);
				
				#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
				ESP_LOGI(Display, "... connected");
				#endif

				freeaddrinfo(res);

				if (write(s, wifi_data_send, strlen(wifi_data_send)) >= 0) 
				{
					#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
					ESP_LOGI(Display, "... socket send success");
					#endif
					
					do{
						rv = select(n, &readfds, NULL, NULL, &tv);
					
						if (rv > 0) 
						{
							if (FD_ISSET(s, &readfds)) 
							{
								bzero(recv_buf, sizeof(recv_buf));
						   
								read(s, recv_buf, sizeof(recv_buf)-1);
						  
								strcat(response_buffer,recv_buf);
							}
						}
					}while(rv>0);

					
					#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_RESPONSE)
					ESP_LOGI(Display,"\nresponse_buffer=%s\n",response_buffer);
					#endif
					
					//#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
					//ESP_LOGI(Display, "\n... done reading from socket. Last read return=%d errno=%d\r\n", r, errno );
					//#endif	
	
					//-------check that server has saved client data or not-------//
						if(strstr(response_buffer,"data saved"))
						{
							server_saved_data_flag = True;
							
						//	#ifdef TEST_CASES_INDICATION
							indicate_server_communication_done_kt();
						//	#endif
							
						
						}
						else
						{
							server_saved_data_flag = False;
							
							#ifdef TEST_CASES_INDICATION
							indicate_server_communication_issue_kt();
							#endif
						}
					//------------------------------------------------------------//
					
					if(strstr(response_buffer,"deactivated"))
					{
						#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_RESPONSE)
						ESP_LOGE(Display,"\nsystem is deactivated\n");
						#endif
						
						paired_tags_status = DEACTIVATED;
						
						system_software_reset_kt();
					}
					else
						paired_tags_status = ACTIVATED;
				}
				else
				{
					#ifdef TEST_CASES_INDICATION
					indicate_server_communication_issue_to_write_kt();
					#endif
					
					server_saved_data_flag = False;			//	server has been not saved client data 
				}
			}
			else
			{
				#ifdef TEST_CASES_INDICATION
				indicate_server_connection_issue_kt();
				#endif
				
				server_saved_data_flag = False;			//	server has been not saved client data

				
			}
		}
		else
			server_saved_data_flag = False;				//	server has been not saved client data
		
		close(s);
	}
	else
	{
		server_saved_data_flag = False;					//	server has been not saved client data
		
		freeaddrinfo(res);
		
		
	}
}

WiFive
Posts: 3529
Joined: Tue Dec 01, 2015 7:35 am

Re: reason for watchdog trigger.

Postby WiFive » Wed Dec 13, 2017 7:55 am

Add some debug to the do while loop

kishan patel
Posts: 45
Joined: Wed Aug 30, 2017 4:56 am

Re: reason for watchdog trigger.

Postby kishan patel » Wed Dec 13, 2017 9:19 am

okay,i have added debug print in do while loop.

Some time system has hang and when i can try to check debug log,i can see as below:

CPU 0: main
Task watchdog got triggered. The following tasks did not feed the watchdog in time:
Tasks currently running:

so,what should be the reasons behind it.
if any idea please,tell me.

f.h-f.s.
Posts: 214
Joined: Thu Dec 08, 2016 2:53 pm

Re: reason for watchdog trigger.

Postby f.h-f.s. » Mon Dec 18, 2017 1:21 pm

Your last log msg is "ESP_LOGI(Display, "... socket send success");"

WiFive:
Add some debug to the do while loop
Means this loop:

Code: Select all

do{
rv = select(n, &readfds, NULL, NULL, &tv);

if (rv > 0)
{
if (FD_ISSET(s, &readfds))
{
bzero(recv_buf, sizeof(recv_buf));

read(s, recv_buf, sizeof(recv_buf)-1);

strcat(response_buffer,recv_buf);
}
}
}while(rv>0);
This is a loop that can take a while? if the main task isnt sleeping every once in a while, the WDT task watchdog will reset the device.
If this do while loop doesnt sleep somewhere the WDT will trigger (idk if select or read calls vtaskdelay)

Add printlines to your do while loop to check if the WDT is triggered in that loop, and add a vtaskdelay where the WDT is triggered.
more info on WDT: http://esp-idf.readthedocs.io/en/latest ... /wdts.html

kishan patel
Posts: 45
Joined: Wed Aug 30, 2017 4:56 am

Re: reason for watchdog trigger.

Postby kishan patel » Tue Dec 19, 2017 4:33 am

Thanks for reply,
I have added debug print in loop as below:


do{
rv = select(n, &readfds, NULL, NULL, &tv);

#if (defined WIFI_DEBUG_PRINT) && (defined WIFI_SERVER_LINK_STATUS)
ESP_LOGI(Display, "\n\nselect returns= %d\n\n",rv);
#endif

if (rv > 0)
{
if (FD_ISSET(s, &readfds))
{
bzero(recv_buf, sizeof(recv_buf));

read(s, recv_buf, sizeof(recv_buf)-1);

strcat(response_buffer,recv_buf);
}
}
}while(rv>0);



now,log look like as below:

[0m
[0;3Task watchdog got triggered. The following tasks did not feed the watchdog in time:
Tasks currently running:
CPU 0: main
2mI (9681526) WIFI >> DEBUG-PRINT:

select returns= 1

[0m
[0;32mI (9681543) WIFI >> DEBUG-PRINT:

select returns= 1

[0m
[0;32mI (9681549) WIFI >> DEBUG-PRINT:

select returns= 1

[0m
[0;32mI (9681555) WIFI >> DEBUG-PRINT:

select returns= 1

[0m
[0;32mI (9681562) WIFI >> DEBUG-PRINT:

Who is online

Users browsing this forum: Baidu [Spider] and 57 guests