nightly: four jobs red since 10-08 (two CI/tooling defects, two UX budgets), and a cached model that outlives an mcpp upgrade
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 15/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- cpp, docker, github-actions, linux
- Ambito
- build-system, ci-cd, devops, testing-qa
Direzione di ricerca
This bundles five separate problems, so pick one item rather than the whole list. The smallest is the bind mount in nightly.yml: /mnt/scripts is not visible after proot-distro login debian, so check that job's docker run and --bind flags. The UTF-8 truncation crash is in the conformance runner's measure output, where text is clipped before dump(). Done means the nightly job runs past the --measure step and a unit test with a clipped multi-byte string passes.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The nightly workflow has failed every night since 2026-10-08, the same four jobs each time; the run on the 0.0.16 merge commit (d3c3a94, run 38481569529) is the latest. None of it is a regression of 0.0.16 (its PR CI and the release run's pre-release tests passed). Two failures are defects in CI or the test tooling, two are UX budgets never met. One more problem found while verifying 0.0.16 is added at the end. To be handled later; this issue collects them.
1. termux + proot-distro Debian (linux-arm64): the script is not visible inside Debian
proot-distro login debian --bind /mnt/work:/work -- bash /mnt/scripts/in-debian.sh
bash: /mnt/scripts/in-debian.sh: No such file or directory (exit 127)
nightly.yml mounts $RUNNER_TEMP at /mnt/scripts in the termux container (docker run -v "$RUNNER_TEMP:/mnt/scripts:ro"), but proot-distro login debian enters Debian's own rootfs and binds only /mnt/work. mcppls never runs in this job.
Fix: add --bind /mnt/scripts:/mnt/scripts (or write in-debian.sh under /mnt/work).
2. self-hosting (real-xlings, linux-x64): mcppls-conformance aborts writing --measure
Every check passes (real-xlings: 0 failure(s)), then the runner dies:
libc++abi: terminating due to uncaught exception of type nlohmann::json_abi_v3_12_0::detail::type_error:
[json.exception.type_error.316] incomplete UTF-8 string; last byte: 0x86
... Aborted (core dumped) stage/mcppls-conformance run ... --measure "$RUNNER_TEMP/self/real-xlings.json"
Same in the 10-11 and 10-13 nightlies. Something put into the measure JSON (most likely a detail or log tail clipped by bytes) is cut in the middle of a multi-byte UTF-8 character, and dump() throws.
Fix: clip on a UTF-8 boundary wherever the runner truncates text it stores, and/or dump with error_handler_t::replace. A unit test with a clipped multi-byte string.
3. ux (ux-xlings, round 1): U13 idle budgets
| budget | d3c3a94 | earlier nightlies | |
|---|---|---|---|
| clangd CPU while nobody asks (10 min idle) | 0.01 cores | 0.07 | 0.03 / 0.05 / 0.38 |
| clangd memory growth | 10% | +18% | -24% / +24% / +80% |
The idle CPU left is clangd's own background work (background index, implementation units built while idle). mcppls's own idle loops fixed in 0.0.16 (the producer re-run every 2 s, the empty-result prefetch) are not what this measures. Needs a breakdown of what clangd does in those ten minutes (CLANGD_TRACE over the idle window) before deciding between work to stop and a budget to revise.
4. ux (ux-mcpp, two-core): U15 stalls, U8 rebuilds after undo
| budget | d3c3a94 | earlier nightlies | |
|---|---|---|---|
| U15-cold: longest time not ready without progress | 60 s | 117 s | 89 / 108 / 100 s |
| U15-faults: same | 60 s | 127 s | 82 / 104 / 99 s |
| U8-config: module files rebuilt after the mcpp.toml change is undone | 0 | 3 | 4 (10-11) |
- The workflow's own comment says the two-core round "is recorded and never fails the workflow", yet the job fails: either make it
continue-on-erroras intended, or decide it should gate. - U15: on two cores, preparation shows no progress for ~2 minutes; the status should keep reporting progress (or the stall is real and is what to fix).
- U8: undoing a
mcpp.tomlchange should find the earlier BMIs again; 3-4 modules are rebuilt.
5. A cached mcpp model outlives an mcpp upgrade (found while verifying 0.0.16)
A workspace described with mcpp 2026.10.5.2 and then opened with mcpp 2026.10.11.1 first on PATH keeps the old model: the log says the cached mcpp model ... matches its inputs; planning with it while the producer confirms it, then loaded again: unchanged about 70 ms later (no emit could have run), and build.mcpp keeps the diagnostic build.mcpp is not read: mcpp 2026.10.5.2 describes the targets only ... with about.mcpp still 2026.10.5.2. Removing the workspace's mcppls cache directory makes it describe the project with 2026.10.11.1 at once (build.mcpp read, 0 errors).
Expected: the producer's identity (path and version) is part of what the cached model is checked against, so a different mcpp runs the producer instead of confirming the cache. A conformance fixture: describe with one mock mcpp version, switch to another, assert the model's about.mcpp and that the producer ran.
Checklist
- 1. termux: bind
/mnt/scriptsinto Debian - 2. conformance runner: UTF-8-safe truncation in the measure output
- 3. U13: break down clangd's idle work; fix or revise the budget
- 4. two-core round: decide gating; U15 progress during preparation; U8 BMIs after undo
- 5. cached model checked against the producer's identity
- Lingua principale
- C++
- Stelle
- 25
- Fork
- 2
- Merge medio
- 21h 5m
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un 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 Sunrisepeak/mcpp-language-server
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Sunrisepeak/mcpp-language-server#80 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Sunrisepeak/mcpp-language-server#66 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 1/100
Sunrisepeak/mcpp-language-server#77 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Sunrisepeak/mcpp-language-server#71 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
Sunrisepeak/mcpp-language-server#52 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Sunrisepeak/mcpp-language-server
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
xiaoyifang/goldendict-ng#3148 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
triton-inference-server/server#9069 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 4 giorni
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100