Various data races in subinterpreter tests under TSAN
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 35.9k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
Bug report
Thread sanitizer reports a number of data races when running subinterpreter tests
InterpreterPoolMixin (test_concurrent_futures)
-
run_eval_code_obj: see https://github.com/python/cpython/issues/128130 -
posixmodule_execmodifies globalswaitid_result_descandstat_result_desc -
_PyBuiltins_AddExceptions: modifies globalsPyExc_EnvironmentError, etc. https://github.com/python/cpython/blob/49bd47d5f14993d37b97aa2bbf257f5df16b96a9/Objects/exceptions.c#L4354-L4355 -
_PyInterpreterState_FinalizeAllocatedBlocks: modifies _PyRuntime variable _PyInterpreterState_FinalizeAllocatedBlocks -
_globals_fini+clear_interpreter: data race on_globals.module_count(the read inclear_interpreterhappens outside of a lock) -
init_static_exctypes: modifies globals_PyExc_InterpreterError, etc. -
_structmodule_exec: data race reported onptr->unpack = native->unpack
I think for now it would make sense to skip the InterpreterPoolMixin tests when running with TSAN.
test__interpchannels
-
find_name_in_mroand_waiting_release: I don't understand this one, but it happens duringtest_send_recv_different_interpreters_and_threads
test__interpreters and test_interpreters
-
type_ready_set_new: https://github.com/python/cpython/blob/7b2e01bb555359913939d7ff168363f1760d3f8e/Objects/typeobject.c#L8509 -
type_ready: (see https://github.com/python/cpython/issues/129817) - File descriptor race in
test_api.LowLevelTests.test_is_runningandtest_running:close()concurrent withread()on the same file descriptor. -
managed_static_type_state_initintest.test_interpreters.test_stress.StressTests.test_create_many_threaded: data race on the non-atomic read ofinterp_count. - pegen
memo_statisticsmutex is currently only used in free threading build (seen in test_create_many_threaded) - version tags on static types:
NEXT_GLOBAL_VERSION_TAG,type->tp_versions_used, andtp->tp_version_tagmodifications are not thread-safe (seen in test_create_many_threaded)
test_capi.test_misc.assign_version_tag
- race on
NEXT_GLOBAL_VERSION_TAGinassign_version_tag(see above)
Linked PRs
- gh-129826
- gh-129829
- gh-135794
- gh-136266
- gh-143446
- gh-143530
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với các race chưa được kiểm tra trong test_concurrent_futures, test__interpchannels và test__interpreters, sau đó đọc các vị trí được liên kết trong Modules/posixmodule.c, Objects/typeobject.c, Modules/_interpchannelsmodule.c và Modules/_struct.c. Chạy các bài kiểm thử subinterpreter bị ảnh hưởng dưới TSAN; được xem là hoàn tất khi mỗi race được báo cáo đều có cách giải quyết đã được review hoặc trạng thái xử lý được ghi lại, đồng thời đã xem xét các PR được liên kết.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- c, python
- Lĩnh vực
- backend, testing-qa
- Loại issue
- Lỗi
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 20/100