Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Concurrency docs and the race gate: state that a user data race is UNDEFINED (allocator corruption), enumerate the process-global surfaces for embedders, and extend the TSan slice to the shapes it never runs

Đang mở
#1,152 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Tài liệu
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
c

Hướng nghiên cứu

Start with docs/CONCURRENCY.md and docs/EMBEDDING.md, then inspect eigs_embed.h, src/embed_concurrent.c, and tests/test_tsan.sh. Compare the documented guarantees and existing TSan shapes with the listed probes and missing controls. Done means the process-global surfaces and undefined race behavior are documented and the specified clean concurrency shapes are covered by the gate.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:concurrency area:docs area:gates kind:docs-drift

Found by the 2026-09-14 whole-runtime concurrency review (three independent reviewers, every finding below reproduced by execution on main @ a18deac unless marked reading). Probe files live in ~/src/wt/briefs/conc-review/probes-{A,B,C}/.

Doc corrections (each verified by execution)

  • docs/CONCURRENCY.md says a closure race is "yours to avoid, exactly as in C" but frames it as lost updates. Measured: two workers appending to one list → realloc(): invalid old size / SIGSEV / double free or corruption (rc=134/139) within 10k iterations, 3/3 runs; a single WRITER plus a single READER on a module-level STRING binding crashes (slot_incref src/value_slot.h:91-93 from vm_run_ex src/vm.c:3597 outside g_module_env_lock vs env_set_hashed freeing the old value) — reads count. State plainly: any concurrent access to a shared container or binding, reads included, is undefined and can crash the process; #607's lock protects array growth only.
  • "messages copy" — see the buffer/text_builder/closure issue.
  • Worker exit semantics — see the worker-exit issue.
  • "collection resumes once all workers are joined" — see the GC issue.
  • "Replay boundary": any nondeterministic builtin on a worker while a tape is open is also unreplayable (torn tape) — see the tape issue.
  • EIGS_JIT_STATS=1 prints its footer once per worker detach (N+1 times) — cosmetic (reading).

Embed API (docs/EMBEDDING.md, eigs_embed.h)

Claims independent concurrent interpreters but does not enumerate the process-global surfaces reachable from two states on two threads: tape/sink/replay, arming sets, g_trace_current_line (vm.c:6148 writes it whenever the STATE is single-threaded — two states race on it), g_source_provider (eigs_embed.c:396-402), g_module_ns_tab, g_random_seeded, SIGPIPE. Only eigs_set_abort_flag is documented as process-global. src/embed_concurrent.c covers thresholds/globals/error flag only — no tape, no import, no nondet builtin, no close-while-other-runs — and is not in tests/test_tsan.sh.

Gate gaps (tests/test_tsan.sh, 13-file slice census)

Every file is main + 1-3 workers with 2-party channels. Never run: 3+ threads on one channel, close-while-blocked, nested spawn, worker throw, worker exit, cross-thread/double join, load_file/import/eval in a worker, tasks in a worker, a worker writing a NEW dict key, EIGS_TRACE/EIGS_REPLAY with workers, two embed states. The review's clean shapes (fan-in 3, close-while-blocked, nested spawn, worker errors, worker exit, tasks in workers, spawn while emitted JIT code runs, replay boundary #1112) should be enrolled as controls; the red shapes belong to their issues. #1139 adds the TSan-with-HTTP lane.

Ngôn ngữ chính
C
Star
3
Fork
7
Merge trung bình
3 giờ 58 phút
Pull request đã merge (30 ngày)
105

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của InauguralSystems/EigenScript

Tất cả issue của InauguralSystems/EigenScript

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.