Potential thread stack overflow in SystemTask::Process
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- cmake, cpp
- Ambito
- embedded-iot, operating-systems
Direzione di ricerca
Inizia da src/systemtask/SystemTask.cpp nella posizione collegata di SystemTask::Process e dalle opzioni di utilizzo dello stack in CMakeLists.txt. Compila con make pinetime-app, esamina i file .su generati e traccia il percorso di chiamata segnalato da Process a littlefs. Il lavoro è completato quando si determina se il percorso di 1432 byte supera lo stack del thread e si affronta o si documenta il risultato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Issue details
While some detailed build configuration, There are potential stack overflow in thread function named SystemTask::Process
In this line, SystemTask::Process Allows 1400(350*4) stack size.
However, after checking the stack using our internally developed tool, it might have 1432 Bytes in with some detailed configurations.
Steps to produce
1. In CMakeLists.txt , Add this line:
add_compile_options(
$<$<COMPILE_LANGUAGE:C>:-fstack-usage>
$<$<COMPILE_LANGUAGE:CXX>:-fstack-usage>
)
This will help you automatically calculating stack size of each function.
2. Build InfiniTime normally, using this configurations:
make pinetime-app
Now we can get stack usage file (*.su) for each source file, So we can manually check stack size of each function.
In case of SystemTask::Process :
There are large call stack with this flow:
Pinetime::System::SystemTask::Process (_ZN8Pinetime6System10SystemTask7ProcessEPv) => 8 bytes
Pinetime::System::SystemTask::Work (_ZN8Pinetime6System10SystemTask4WorkEv) => 64 bytes
Pinetime::Controllers::NimbleController::Init(_ZN8Pinetime11Controllers16NimbleController4InitEv) => 24 bytes
Pinetime::Controllers::NimbleController::RestoreBond(_ZN8Pinetime11Controllers16NimbleController11RestoreBondEv) => 272 bytes
Pinetime::Controllers::FS::FileDelete(_ZN8Pinetime11Controllers2FS10FileDeleteEPKc) => 0 bytes
lfs_remove(lfs_remove) => 120 bytes
lfs_fs_forceconsistency(lfs_fs_forceconsistency) => 144 bytes
lfs_dir_drop(lfs_dir_drop) => 24 bytes
lfs_dir_commit(lfs_dir_commit) => 168 bytes
lfs_dir_compact(lfs_dir_compact) => 160 bytes
lfs_dir_split(lfs_dir_split) => 88 bytes
lfs_dir_alloc(lfs_dir_alloc) => 32 bytes
lfs_alloc(lfs_alloc) => 24 bytes
lfs_fs_rawtraverse(lfs_fs_rawtraverse) => 104 bytes
lfs_dir_fetch(lfs_dir_fetch) => 24 bytes
lfs_dir_fetchmatch(lfs_dir_fetchmatch) => 112 bytes
lfs_bd_read(lfs_bd_read) => 64 bytes
SUM => 1432 bytes
So, there are potentially occur stack overflow in SystemTask::Process Thread function.
Environment
Version
Commit https://github.com/InfiniTimeOrg/InfiniTime/commit/7128fc045db083c7014166872b50b536942c06e0
- Lingua principale
- C
- Stelle
- 3.4k
- Fork
- 1.1k
- Merge medio
- 23h 18m
- PR unite (30g)
- 1
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di InfiniTimeOrg/InfiniTime
-
BLE handlers use length fields from the packet without checking how much data arrivedForse già presa @DustinHab l’ha presa 35 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
InfiniTimeOrg/InfiniTime#2485 ·
-
Unexpected jump back to watch face when button pressedForse già presa @SteveAmor l’ha presa 79 giorni fa. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 50/100
InfiniTimeOrg/InfiniTime#2461 · 2 commenti ·
-
Screen doesn't go to sleep after reset countdown appForse già presa @SteveAmor l’ha presa 76 giorni fa. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
InfiniTimeOrg/InfiniTime#2419 · 4 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
InfiniTimeOrg/InfiniTime#2410 ·
-
enhancement UI/UX
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
InfiniTimeOrg/InfiniTime#2405 · 2 commenti · 1 reazione ·
Tutte le issue di InfiniTimeOrg/InfiniTime
Issue simili
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
antoxa2584x/nfsu2-sw#44 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
codepointerapp/codepointer#231 ·