Skip to content

Comments

[3.14] gh-137335: Fix unlikely name conflicts for named pipes in multiprocessing and asyncio on Windows (GH-137389)#145170

Merged
serhiy-storchaka merged 1 commit intopython:3.14from
miss-islington:backport-d6a71f4-3.14
Feb 24, 2026
Merged

[3.14] gh-137335: Fix unlikely name conflicts for named pipes in multiprocessing and asyncio on Windows (GH-137389)#145170
serhiy-storchaka merged 1 commit intopython:3.14from
miss-islington:backport-d6a71f4-3.14

Conversation

@miss-islington
Copy link
Contributor

@miss-islington miss-islington commented Feb 24, 2026

Since os.stat() raises an OSError for existing named pipe "\.\pipe...",
os.path.exists() always returns False for it, and tempfile.mktemp() can
return a name that matches an existing named pipe.

So, tempfile.mktemp() cannot be used to generate unique names for named
pipes. Instead, CreateNamedPipe() should be called in a loop with
different names until it completes successfully.
(cherry picked from commit d6a71f4)

Co-authored-by: Serhiy Storchaka storchaka@gmail.com

…processing and asyncio on Windows (pythonGH-137389)

Since os.stat() raises an OSError for existing named pipe "\\.\pipe\...",
os.path.exists() always returns False for it, and tempfile.mktemp() can
return a name that matches an existing named pipe.

So, tempfile.mktemp() cannot be used to generate unique names for named
pipes. Instead, CreateNamedPipe() should be called in a loop with
different names until it completes successfully.
(cherry picked from commit d6a71f4690c702892644b1fbae90ae9ef733a8ab)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
@serhiy-storchaka serhiy-storchaka enabled auto-merge (squash) February 24, 2026 11:28
@serhiy-storchaka serhiy-storchaka merged commit bbce6ba into python:3.14 Feb 24, 2026
85 of 88 checks passed
@miss-islington miss-islington deleted the backport-d6a71f4-3.14 branch February 24, 2026 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants