Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

TSan embed row counts only trace.c races and warms up on the main thread — first-use init races are invisible

Aperta
#1,334 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à
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c, shell

Direzione di ricerca

Start with tests/test_tsan.sh and the embed_concurrent row, then trace the eigs_open and eigs_eval_string calls used by the reproducer. Update the TSan check to cover reports beyond src/trace.c while keeping suppressions explicit, and run the first-use concurrent states without main-thread warm-up. Done means a planted lazy-table race makes the row fail, with calibration recorded in the PR.

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

Descrizione

area:concurrency area:gates found-by:critic kind:gate-defect

Found by the blind critic on PR #1332 (#1275 batch B). The PR introduced a lexer data race: first-use initialisation of the operator filter tables. CI's TSan lane did not see it, for two reasons.

  • The embed_concurrent row in tests/test_tsan.sh counts only reports whose stack is in src/trace.c, so a race anywhere else in the runtime passes.
  • Its main thread lexes before any worker does, so first-use initialisation always completes single-threaded.

The critic's reproducer races it in 5 of 10 runs (and 0 of 13 on main): two threads each call eigs_open, wait on a barrier, then eigs_eval_string.

Done when

  • The TSan embed row fails on ANY ThreadSanitizer report, not only src/trace.c ones. Existing suppressions stay explicit and carry reasons.
  • A row runs two or more states that lex, compile and eval for the FIRST time concurrently (barrier-released, no main-thread warm-up).
  • Calibrated once: a planted first-use init race (a lazily filled static table) makes the row red. Recorded in the PR.
Lingua principale
C
Stelle
3
Fork
7
Merge medio
3h 58m
PR unite (30g)
105

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

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 InauguralSystems/EigenScript

Tutte le issue di InauguralSystems/EigenScript

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.