zerocopy_with_qd: intermittent early quiescence in the two-process run on reconverse (macOS CI, 1 of ~10)

Aperta
#3,978 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
22/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
cpp

Direzione di ricerca

Start from tests/charm++/zerocopy/zerocopy_with_qd/zerocopy_with_qd.C around the srcCompletedCounter assert (line 78) and the Direct-API / QD path. The report points at a residual window between RMA completion, QD decrement, and callback delivery (CMK_ONESIDED_IMPL; reconverse #222). Reproduce by looping the two-process case (lcrun -n 2 ./zerocopy_with_qd +pe 6 142) on macOS arm64. Done means the two-process run no longer declares QD early; this is a race, not a one-file edit.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

tests/charm++/zerocopy/zerocopy_with_qd failed once on the reviewed line's macOS CI job (reconverse-darwin-arm64), in the two-process run (+p6, 142 elements), and passed on an immediate rerun of the same commit. It has otherwise passed in every run since it joined the reconverse CI tier in #3974 (2026-09-11): about ten macOS runs across pushes and PR builds, including the PR build of #3977 47 minutes before the failure.

  • Failed: run 34771593767 attempt 1, push of a30605e0b (#3977 merge), 2026-09-13 17:26 UTC. https://github.com/charmplusplus/charm/actions/runs/34771593767/attempts/1
  • Passed: attempt 2 of the same run, same commit, 2026-09-14 00:02 UTC.
  • The merge commit changed only tests/reconverse-site-run.sh, which CI does not execute, so the code under test was identical to the passing PR build.
  • Linux x86_64, Linux arm64 and the stress job passed on the same commit.

Failure

testrun(reconverse): .../_deps/lci-src/lcrun -n 2 ./zerocopy_with_qd +pe 6 142
Reconverse> Starting Reconverse with 2 processes, 6 PEs (1 PE = 1 thread), and 3 PEs per process
[0][0][0] Test 1: QD has been reached for RO Variable Bcast
Assertion srcCompletedCounter == 3*numElements/2 failed: file zerocopy_with_qd.C, line 78
------- Processor 0 Exiting: Called CmiAbort ------
Reason: Failed assert

Reading

Phase 2 of the test (Direct API). Quiescence was declared while the completion counters were short of 3*numElements/2. The assertion on line 77, srcCompletedCounter == destCompletedCounter, passed first, so source and destination callbacks agreed with each other and both were short: QD fired early on the two-process path rather than one side losing an acknowledgement. This is the same area reconverse #222 touched (one quiescence count per Direct-API RDMA operation, CMK_ONESIDED_IMPL), so a residual window between the RMA completion, the QD decrement and the callback delivery is the first place to look.

To reproduce

Loop the two-process case on macOS arm64 (or any two-process reconverse build):

cd tests/charm++/zerocopy/zerocopy_with_qd && make
for i in $(seq 1 200); do lcrun -n 2 ./zerocopy_with_qd +pe 6 142 || { echo FAIL $i; break; }; done

Related: reconverse #222 (fix that made this test reach QD with two processes), reconverse #223 (a different two-process zerocopy failure, zc_post_modify_size).

🤖 Generated with Claude Code

Lingua principale
C++
Stelle
241
Fork
62
Merge medio
1g 1h
PR unite (30g)
121

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di charmplusplus/charm

Tutte le issue di charmplusplus/charm

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.