1
0
Fork 0
InfiniTime/src
Jean-François Milants f6d7f602f5 Fix deadlock when a lot of notifications are received in a very short time span.
When a notification is received, SystemTask sends messages to DisplayApp, which loads the Notifications apps that sends a few messages to SystemApp.
When notification are received too quickly, DisplayApp and SystemTask cannot process those messages fast enough (probably because of the time it takes to refresh the display) and the message queues fill up. When they are full, the current implementation just waits until there's room available to store the event. In this case, since both tasks exchange messages, they end up in a deadlock.

This fix consists in setting the timeout value to 0 (non-blocking mode) for the NewNotification messages on the DisplayApp side. This will prevent the SystemTask from being blocked (which would result in the watchdog reseting the watch). A more generic approach should be design in the future.
2023-11-19 20:58:29 +01:00
..
buttonhandler ButtonHandler: includes relative to src dir 2022-01-16 20:59:49 +01:00
components weather: Fix GetCurrent* functions returning future events (#1879) 2023-10-06 19:54:20 +02:00
displayapp Fix deadlock when a lot of notifications are received in a very short time span. 2023-11-19 20:58:29 +01:00
drivers ST7789 : do not reconfigure the reset pin to default during sleep. 2023-06-04 17:22:27 +02:00
FreeRTOS Refactor pvPortRealloc() to improve readability. 2023-05-18 19:58:09 +02:00
heartratetask Refactored Ppg for frequency based algorithm. (#1486) 2023-04-30 15:50:18 +02:00
libs arduinofft: Move to submodule, define srqt_internal externally 2023-06-17 17:46:48 +02:00
logging Format header files 2023-01-09 21:41:21 +01:00
resources lv_img_conv_py: minimal python port of node module 2023-10-26 22:45:01 +02:00
systemtask lowersleep: Implement Lower to Sleep functionality (#827) 2023-08-27 18:15:21 +02:00
touchhandler TouchHandler: Do not store touch panel reference 2023-02-24 00:05:21 +02:00
utility motioncontroller: Add functions for analysis 2023-08-17 21:21:22 +02:00
BootErrors.h Automatic error detection 2021-08-18 15:23:30 +03:00
BootloaderVersion.cpp Fix InfiniTime compiler warnings 2022-06-19 13:41:33 +03:00
BootloaderVersion.h Fix InfiniTime compiler warnings 2022-06-19 13:41:33 +03:00
CMakeLists.txt motioncontroller: Add functions for analysis 2023-08-17 21:21:22 +02:00
FreeRTOSConfig.h Enable malloc error and stack overflow error detection in FreeRTOS. Count them and display them in the SystemInfo app. 2023-05-18 19:58:09 +02:00
main.cpp Power optimization - Improve SPI sleep mode 2023-06-04 17:22:27 +02:00
main.h Enable malloc error and stack overflow error detection in FreeRTOS. Count them and display them in the SystemInfo app. 2023-05-18 19:58:09 +02:00
recoveryLoader.cpp Power optimization - Improve SPI sleep mode 2023-06-04 17:22:27 +02:00
sdk_config.h Switch to freertos timers (#1095) 2022-06-06 17:47:43 +02:00
stdlib.c Unify all heaps (stdlib + LVGL + FreeRTOS) into a single heap managed by FreeRTOS and heap_4_infinitime.c. 2023-05-18 19:58:09 +02:00
Version.h.in Add missing standard includes 2021-11-15 22:02:49 +01:00