Hello,
In the esp_task_wdt_feed() function there is an error in that the last task added to the list never gets checked as it's fed_watchdog flag is never cleared. When "for (wdttask=wdt_task_list;" is searching through the list it exits when "wdttask->next!=NULL;" which means that the last task in the list never gets it's fed_watchdog flag reset as the last task in the list will always have it's wdttask->next set to NULL!
if (do_feed_wdt) {
//All tasks have checked in; time to feed the hw watchdog.
TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
TIMERG0.wdt_feed=1;
TIMERG0.wdt_wprotect=0;
//Reset fed_watchdog status
//for (wdttask=wdt_task_list; wdttask->next!=NULL; wdttask=wdttask->next) wdttask->fed_watchdog=false;
// Bug fix, end search when wdttask!=NULL
for (wdttask=wdt_task_list; wdttask!=NULL; wdttask=wdttask->next) wdttask->fed_watchdog=false;
}
Regards,
Charles
esp_task_wdt_feed() wdt feed error
-
- Posts: 9757
- Joined: Thu Nov 26, 2015 4:08 am
Re: esp_task_wdt_feed() wdt feed error
Thanks for mentioning this. We are aware of this issue and it'll be fixed in a MR that overhauls the entire watchdog code slightly; should be coming into master shortly.
Who is online
Users browsing this forum: No registered users and 20 guests