CI: add a tsan-http lane — the stock tsan target compiles ext_http.c out, and #1137 was only found by an ad-hoc one
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 73/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Domain
- build-system, ci-cd, testing-qa
Research direction
Start with the Makefile's existing asan-http target and comment, then inspect the CI configuration and tests/http_readiness.py sections [44], [45a], and [45b]. Add the tsan-http build and CI lane with setarch -R and TSAN_OPTIONS=halt_on_error=1, and run the seeded-race control from tests/test_tsan.sh against it so the lane passes normally and detects the intentional race.
Written by the indexing model from the issue text.
Description
Gap
make tsan builds SRC_V_tsan := $(SOURCES) with $(DEFS_OFF), so ThreadSanitizer never sees ext_http.c — the repo's most concurrent code (thread-per-connection workers, per-worker EigsState, the init responder thread, the shared store). ASan got an asan-http variant for the same structural reason (see the Makefile comment above that target); TSan never did.
Evidence
PR #1138's exit ring built an ad-hoc variant:
make 'VARIANTS=tsan-http-check' 'SRC_V_tsan-http-check=$(SRC_V_asan-http)' \
'FLAGS_tsan-http-check=$(filter-out $(DEFS_OFF),$(FLAGS_tsan)) -DEIGENSCRIPT_EXT_HTTP=1 -DEIGENSCRIPT_EXT_MODEL=1 -DEIGENSCRIPT_EXT_NET=1 -DEIGENSCRIPT_EXT_DB=0' \
'LIBS_tsan-http-check=$(LIBS_tsan)' build/tsan-http-check/eigenscript
and ran tests/http_readiness.py against it under setarch -R with TSAN_OPTIONS=halt_on_error=1. It found #1137 (a pre-existing data-race class: g_builtin_binding_count plus four lazily-initialised env caches, all plain globals first written by whichever worker thread asked first) on its first run. The stock tsan CI lane was green throughout.
Ask
- A
tsan-httpMakefile target mirroringasan-http(HTTP+MODEL+NET on, DB off). - A CI lane that builds it and runs at least the HTTP sections of the suite ([44], [45a], [45b]) under
setarch -Rwithhalt_on_error=1— [45a] alone drives 256 concurrent connections and is what surfaced #1137. tests/test_tsan.sh's seeded-race control should run against this variant too, so the lane proves it can go red.
- Dominant language
- C
- Stars
- 3
- Forks
- 7
- Avg merge
- 4h 15m
- Merged PRs (30d)
- 106
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from InauguralSystems/EigenScript
-
area:lint-tooling bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
InauguralSystems/EigenScript#1340 ·
Maintainers usually reply within 1 day
-
area:stdlib found-by:code-review kind:silent-wrong
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
InauguralSystems/EigenScript#1338 ·
Maintainers usually reply within 1 day
-
area:lint-tooling found-by:critic kind:docs-drift
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
InauguralSystems/EigenScript#1335 ·
Maintainers usually reply within 1 day
-
area:ci found-by:critic kind:gate-defect
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
InauguralSystems/EigenScript#1311 ·
Maintainers usually reply within 1 day
-
enrolment: decide test_gc_runner_controls.py (exempt vs enrol) and whether floors need a ratchetOpenarea:gates found-by:critic kind:decision
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
InauguralSystems/EigenScript#1280 · 1 comment ·
Maintainers usually reply within 1 day
All issues in InauguralSystems/EigenScript
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
microsoft/ebpf-for-windows#5604 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 84/100
AcademySoftwareFoundation/openexr#2683 ·
Maintainers usually reply within 1 day