mips64 / mips64el CI: spurious FPU exception flags under qemu-user
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- c, github-actions, ubuntu
- Ambito
- ci-cd, operating-systems, testing-qa
Direzione di ricerca
Inizia da .github/workflows/cross.yml e riproduci make test, inclusi test/test-float e test/test-double, nella configurazione fissata Ubuntu 24.04 qemu-user. Confronta il comportamento dei flag delle eccezioni su bare metal o con qemu-system-mips64 e verifica se una versione più recente di qemu lo modifica. Il lavoro è completato quando si determina se le voci CI possono essere riabilitate oppure si documenta e implementa uno skip equivalente del test delle eccezioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The mips64 and mips64el entries in .github/workflows/cross.yml are disabled because the in-tree test suite fails under qemu-user on Ubuntu 24.04. Disabled in #346.
Symptom
make test (which runs test/test-float and test/test-double) reports ~1600 failures, all of the form:
```
Failure: yn (1, 1.5) == -0.41230862697391129595: Exception "Invalid operation" set
Failure: yn (1, 2.0) == -0.10703243154093754689: Exception "Divide by zero" set
```
The computed value is correct in each case — the test fails only because the FPU exception flag is unexpectedly set after the call. No numeric disagreement.
Failing run (mips64): https://github.com/JuliaMath/openlibm/actions/runs/27987699090/job/82832967366
Failing run (mips64el): https://github.com/JuliaMath/openlibm/actions/runs/27987699090/job/82832967387
32-bit mips and mipsel pass under the same qemu / toolchain combination, which strongly suggests this is qemu-user mishandling MIPS64 FPU status register semantics rather than an openlibm bug. Possibly related: qemu's softfloat IEEE flag mapping for the n64 ABI.
To investigate
- Reproduce on bare metal or under
qemu-system-mips64(full-system) and compare flag behavior. - Check whether
qemu-user >= <some version>fixes it (current pin is Ubuntu 24.04's qemu). - If qemu-user is unfixable here, decide whether to keep mips64 CI entirely or run only with exception-flag assertions skipped (the openlibm-test suite has
SKIP_FP_EXCEPT_TEST=1; the in-tree suite would need an equivalent knob).
How to re-enable
In .github/workflows/cross.yml, uncomment the two matrix entries:
```yaml
- { arch: mips64, triple: mips64-linux-gnuabi64 }
- { arch: mips64el, triple: mips64el-linux-gnuabi64 }
```
- Lingua principale
- C
- Stelle
- 632
- Fork
- 163
- Merge medio
- 4m
- PR unite (30g)
- 1
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 JuliaMath/openlibm
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di JuliaMath/openlibm
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
python-pillow/Pillow#10087 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenPrinting/cups#1729 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
awslabs/amazon-kinesis-video-streams-webrtc-sdk-c#2406 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
DaveGamble/cJSON#1094 ·
-
status:needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
PX4/PX4-Autopilot#28923 ·
I maintainer di solito rispondono entro 1 giorno