Reference cycles can cause infinte loops
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- operating-systems
Direzione di ricerca
Inizia eseguendo l’esempio ASL dell’issue e seguendo la risoluzione dei riferimenti in Return (Local3), dove il ciclo causa l’overflow dello stack. Leggi issue #313 per il comportamento correlato dello store. Il lavoro è completo quando i riferimenti ciclici non entrano più in un ciclo infinito né causano un overflow dello stack, con un test di regressione che copra l’esempio fornito.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I think this is a low priority for reasons at the end.
The following ASL demonstrates the issue:
DefinitionBlock("", "DSDT", 1, "RSACPI", "Refs", 1) {
Method(MAIN) {
Local0 = 1
Local1 = RefOf(Local0)
Local2 = RefOf(Local1)
Local0 = RefOf(Local2)
// This line doesn't cause an infinite loop, it just stores a reference
Local3 = Local0
// The following line causes an infinite loop trying to get the value
Return (Local3)
}
}
This actually fails with thread 'main' (19208) has overflowed its stack.
At present it isn't possible to test stores to the cycle (e.g. Local0 = 2 instead of Local3 = Local0), but the fix for issue #313 would unblock this - in that case Stores also cause infinite loops, but without the stack overflow.
Why is this a low priority?
- Surely no-one would write ASL like this? (insert "right? right?" meme here)
- uACPI also hangs in this case
acpiexecjust exits the process with no error messages
So this crate failing is not out line with other implementations (although I didn't test Windows). I think this should be a straightforward fix - just add a loop counter when unwrapping references?
There's a more complex fix - raising errors when trying to create cycles - but IMO it's not worth the extra complexity.
- Lingua principale
- Rust
- Stelle
- 245
- Fork
- 93
- Merge medio
- 5g 9h
- PR unite (30g)
- 21
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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 rust-osdev/acpi
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
rust-osdev/acpi#354 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
rust-osdev/acpi#353 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
rust-osdev/acpi#328 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
impl Sync for FixedRegisters?Forse già presa @martin-hughes l’ha presa 7 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
rust-osdev/acpi#324 · 9 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
rust-osdev/acpi#273 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di rust-osdev/acpi
Issue simili
-
area:casework bug criticality:p3 triage:needs-implementation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
registrystack/registry-stack#1623 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
DioxusLabs/anyrender#98 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
leptos-rs/leptos#4885 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
longbridge/gpui-kit#3276 ·
I maintainer di solito rispondono entro 1 giorno