lv_task_handler can fail to return in high load scenarios, causing watchdog resets
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Lĩnh vực
- embedded-iot, operating-systems
Hướng nghiên cứu
Bắt đầu bằng cách lần theo lv_task_handler và tương tác giữa DisplayApp/SystemTask được mô tả trong issue, sau đó tái hiện tình trạng bị khóa khi tải hoạt ảnh cao với LV_DISPLAY_REFR_PERIOD ngắn hơn. Công việc được xem là hoàn tất khi trình xử lý tác vụ trả về dưới tải liên tục và hàng đợi thông báo không còn dẫn đến watchdog reset.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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)
- Ngôn ngữ chính
- C
- Star
- 3.4k
- Fork
- 1.1k
- Merge trung bình
- 23 giờ 18 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của InfiniTimeOrg/InfiniTime
-
BLE handlers use length fields from the packet without checking how much data arrivedCó thể đã có người làm @DustinHab đã nhận 37 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 56/100
InfiniTimeOrg/InfiniTime#2485 ·
-
Unexpected jump back to watch face when button pressedCó thể đã có người làm @SteveAmor đã nhận 80 ngày trước. Đang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 50/100
InfiniTimeOrg/InfiniTime#2461 · 2 bình luận ·
-
Screen doesn't go to sleep after reset countdown appCó thể đã có người làm @SteveAmor đã nhận 77 ngày trước. Đang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
InfiniTimeOrg/InfiniTime#2419 · 4 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
InfiniTimeOrg/InfiniTime#2410 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
InfiniTimeOrg/InfiniTime#2407 · 4 bình luận ·
Tất cả issue của InfiniTimeOrg/InfiniTime
Issue tương tự
-
Missing options in yara man pageĐang mởbug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
VirusTotal/yara#2255 ·
-
[BUG] Filename sequence expansion (`+`) panics on numeric values exceeding `i32::MAX`Có thể đã có người làm @muntasir-396 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
CCExtractor/ccextractor#2402 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
FujiNetWIFI/fujinet-lib#204 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
os:linux
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
mpv-player/mpv#18649 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
facebookincubator/muse-gadget-sdk#249 ·
Maintainer thường phản hồi trong vòng 1 ngày