Skip to content

gh-150191: temporarily skip two openssl tests which have internal data races under TSAN - #153320

Merged
kumaraditya303 merged 2 commits into
python:mainfrom
kumaraditya303:ssl-skip
Jul 8, 2026
Merged

gh-150191: temporarily skip two openssl tests which have internal data races under TSAN#153320
kumaraditya303 merged 2 commits into
python:mainfrom
kumaraditya303:ssl-skip

Conversation

@kumaraditya303

@kumaraditya303kumaraditya303 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

See #150191

ContextTests.test_sni_callback_race — 2 reports

Default build — setter write vs final_server_name read:

WARNING: ThreadSanitizer: data race (pid=36258)
Write of size 8 at 0x726c00056c30 by thread T15: # toggler thread
#0 ssl3_ctx_callback_ctrl ssl/s3_lib.c:4200 # ctx->ext.servername_cb = fp
#1 SSL_CTX_callback_ctrl ssl/ssl_lib.c:3251
#2 _ssl__SSLContext_sni_callback_set_impl Modules/_ssl.c:5319
#4 getset_set → PyObject_SetAttr # server_ctx.sni_callback = ...
Previous read of size 8 at 0x726c00056c30 by thread T12: # handshake worker
#0 final_server_name ssl/statem/extensions.c:1004 # reads servername_cb
#1 tls_parse_all_extensions ssl/statem/extensions.c:816
#2 tls_early_post_process_client_hello ssl/statem/statem_srvr.c:1965
#7 ossl_statem_accept → #8 SSL_do_handshake
#9 _ssl__SSLSocket_do_handshake_impl Modules/_ssl.c:1099 # server.do_handshake()
Location: heap block of size 1768 (SSL_CTX, allocated in SSL_CTX_new
from _ssl__SSLContext_impl, Modules/_ssl.c:3509)

Free-threading build — same write, different read site:

WARNING: ThreadSanitizer: data race (pid=36449)
Read of size 8 at 0x726c00002c30 by thread T12: # handshake worker
#0 is_tls13_capable ssl/statem/statem_lib.c:1932
# if (sctx->ext.servername_cb != NULL || s->session_ctx->ext.servername_cb != NULL)
#1 ssl_version_supported ssl/statem/statem_lib.c:2011
#2 ssl_choose_server_version ssl/statem/statem_lib.c:2240
#9 SSL_do_handshake → _ssl__SSLSocket_do_handshake_impl Modules/_ssl.c:1099
Previous write of size 8 by thread T15: # toggler thread
#0 ssl3_ctx_callback_ctrl ssl/s3_lib.c:4200
#2 _ssl__SSLContext_sni_callback_set_impl Modules/_ssl.c:5319
SUMMARY: data race statem_lib.c:1932 in is_tls13_capable

ThreadedTests.test_thread_recv_while_main_thread_sends — 3 reports

s->rwstate (both builds, identical stacks):

WARNING: ThreadSanitizer: data race
Write of size 4 by main thread: # sock.sendall(data)
#0 ssl3_write_bytes ssl/record/rec_layer_s3.c:285 # s->rwstate = SSL_NOTHING
#3 SSL_write_ex2 → #4 SSL_write_ex
#5 _ssl__SSLSocket_write_impl Modules/_ssl.c:2832
Previous write of size 4 by thread T272: # background sock.recv()
#0 ssl3_read_bytes ssl/record/rec_layer_s3.c:681 # s->rwstate = SSL_NOTHING
#4 SSL_read_ex
#5 _ssl__SSLSocket_read_impl Modules/_ssl.c:2989
Location: heap block of size 5560 (the SSL object, allocated in SSL_new
from newPySSLSocket, Modules/_ssl.c:959, via context.wrap_socket)
SUMMARY: data race rec_layer_s3.c:285 in ssl3_write_bytes

Socket BIO flags (free-threading build only):

WARNING: ThreadSanitizer: data race (pid=36449)
Write of size 4 at 0x72200001d530 by thread T507: # background sock.recv()
#0 BIO_clear_flags crypto/bio/bio_lib.c:201 # bio->flags &= ~...
#1 sock_read crypto/bio/bss_sock.c:128
#4 BIO_read → tls_default_read_n → tls_get_more_records → tls_read_record
#8 ssl3_read_bytes ssl/record/rec_layer_s3.c:696
#12 SSL_read_ex → _ssl__SSLSocket_read_impl Modules/_ssl.c:2989
Previous write of size 4 by main thread: # sock.sendall(data)
#0 BIO_clear_flags crypto/bio/bio_lib.c:201
#1 sock_write crypto/bio/bss_sock.c:168
#5 tls_retry_write_records → SSL_write_ex → _ssl__SSLSocket_write_impl
Location: heap block of size 128 (the socket BIO, allocated via SSL_set_fd,
ssl/ssl_lib.c:1728, from newPySSLSocket)

Comment threadLib/test/test_ssl.py Outdated
@kumaraditya303kumaraditya303 changed the title gh-150191: temporarily skip two openssl tests which have internal data racesgh-150191: temporarily skip two openssl tests which have internal data races under TSANJul 8, 2026
@kumaraditya303
kumaraditya303 merged commit c11af48 into python:mainJul 8, 2026
48 checks passed
@kumaraditya303
kumaraditya303 deleted the ssl-skip branch July 8, 2026 11:48
@kumaraditya303kumaraditya303 added needs backport to 3.14 bugs and security fixes needs backport to 3.15 pre-release feature fixes, bugs and security fixes labels Jul 8, 2026
@miss-islington-app

Copy link
Copy Markdown

Thanks @kumaraditya303 for the PR 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

@miss-islington-app

Copy link
Copy Markdown

Thanks @kumaraditya303 for the PR 🌮🎉.. I'm working now to backport this PR to: 3.15.
🐍🍒⛏🤖

@bedevere-app

Copy link
Copy Markdown

GH-153349 is a backport of this pull request to the 3.14 branch.

@bedevere-appbedevere-appBot removed the needs backport to 3.14 bugs and security fixes label Jul 8, 2026
@bedevere-app

Copy link
Copy Markdown

GH-153350 is a backport of this pull request to the 3.15 branch.

@bedevere-appbedevere-appBot removed the needs backport to 3.15 pre-release feature fixes, bugs and security fixes label Jul 8, 2026
kumaraditya303 added a commit that referenced this pull request Jul 8, 2026
…nal data races under TSAN (GH-153320) (#153350)
gh-150191: temporarily skip two openssl tests which have internal data races under TSAN (GH-153320)
(cherry picked from commit c11af48)
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
kumaraditya303 added a commit that referenced this pull request Jul 8, 2026
…nal data races under TSAN (GH-153320) (#153349)
gh-150191: temporarily skip two openssl tests which have internal data races under TSAN (GH-153320)
(cherry picked from commit c11af48)
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
@kumaraditya303kumaraditya303 added needs backport to 3.14 bugs and security fixes needs backport to 3.15 pre-release feature fixes, bugs and security fixes labels Jul 8, 2026
@miss-islington-app

Copy link
Copy Markdown

Thanks @kumaraditya303 for the PR 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

@miss-islington-app

Copy link
Copy Markdown

Thanks @kumaraditya303 for the PR 🌮🎉.. I'm working now to backport this PR to: 3.15.
🐍🍒⛏🤖 I'm not a witch! I'm not a witch!

@miss-islington-app

Copy link
Copy Markdown

Sorry, @kumaraditya303, I could not cleanly backport this to 3.15 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker c11af48fddb1fd5b38e2f026c333e8487f3bcc53 3.15

@miss-islington-app

Copy link
Copy Markdown

Sorry, @kumaraditya303, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker c11af48fddb1fd5b38e2f026c333e8487f3bcc53 3.14

@kumaraditya303kumaraditya303 removed needs backport to 3.14 bugs and security fixes needs backport to 3.15 pre-release feature fixes, bugs and security fixes labels Jul 8, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip newstestsTests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@kumaraditya303