lv_task_handler can fail to return in high load scenarios, causing watchdog resets
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Domaine
- embedded-iot, operating-systems
Piste de recherche
Commencez par suivre lv_task_handler et l’interaction entre DisplayApp/SystemTask décrite dans l’issue, puis reproduisez le blocage sous une charge d’animation élevée avec une LV_DISPLAY_REFR_PERIOD plus courte. Le travail est terminé lorsque le gestionnaire de tâches retourne sous une charge soutenue et que la file de messages ne provoque plus de réinitialisations du watchdog.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The LVGL task handler re-evaluates higher priority tasks after executing lower priority ones
The animation task is higher priority than refresh tasks
If the animation task or refresh task takes a long time, after executing the refresh task the animation task may be ready again
This causes lv_task_handler to infinitely execute animation->refresh->animation->refresh etc without ever returning
If lv_task_handler doesn't return, the DisplayApp message queue becomes full (usually with touchscreen events) and blocks SystemTask, causing watchdog resets
This happens very rarely or even never in standard InfiniTime. But by either decreasing the LV_DISPLAY_REFR_PERIOD and increasing animation load (e.g animation scroll speed for labels in px/s) (I have not tested if both are required to trigger this behaviour, but I know that both are sufficient), it's possible to reproduce this lockup.
I'd suggest that we replace the LVGL task handler with one that provides a hard upper bound on the number of task executions. Perhaps by only executing each task once and exiting early if it's already spent too long doing work (many tasks waiting)? This would allow task priorities to still be usefully enforced. Lower priority refresh tasks might still get starved by animations though.
Possible cause for #2012 (the notification header scrolling animation)
- Langage dominant
- C
- Étoiles
- 3.4k
- Forks
- 1.1k
- Merge moyen
- 13 h 32 min
- PR mergées (30 j)
- 2
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de InfiniTimeOrg/InfiniTime
-
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
InfiniTimeOrg/InfiniTime#2496 · 5 commentaires ·
-
BLE handlers use length fields from the packet without checking how much data arrivedPeut-être pris @DustinHab l’a pris il y a 46 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 56/100
InfiniTimeOrg/InfiniTime#2485 ·
-
Screen doesn't go to sleep after reset countdown appPeut-être pris @SteveAmor l’a pris il y a 87 jours. Ouvertebug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
InfiniTimeOrg/InfiniTime#2419 · 4 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
InfiniTimeOrg/InfiniTime#2410 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
InfiniTimeOrg/InfiniTime#2407 · 4 commentaires ·
Toutes les issues de InfiniTimeOrg/InfiniTime
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
libsdl-org/SDL#16607 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
PowerShell/Win32-OpenSSH#2482 · 1 réaction ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
zephyrproject-rtos/zephyr#123881 ·
Les mainteneurs répondent en général sous 2 jours