summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbuermarc <44375277+buermarc@users.noreply.github.com>2024-01-17 20:02:14 (GMT)
committerGitHub <noreply@github.com>2024-01-17 20:02:14 (GMT)
commit78fcde039a33d8463e34356d5462fecee0f2831a (patch)
treef4056e00ab6ee8e6f15e496dbedb24a66c23d9ae
parent7573c44c3278eacf0233146037d843bb2563877a (diff)
downloadcpython-78fcde039a33d8463e34356d5462fecee0f2831a.zip
cpython-78fcde039a33d8463e34356d5462fecee0f2831a.tar.gz
cpython-78fcde039a33d8463e34356d5462fecee0f2831a.tar.bz2
gh-38807: Fix race condition in Lib/trace.py (GH-110143)
Instead of checking if a directory does not exist and thereafter creating it, directly call os.makedirs() with the exist_ok=True.
-rwxr-xr-xLib/trace.py3
-rw-r--r--Misc/NEWS.d/next/Library/2023-09-22-22-17-45.gh-issue-38807.m9McRN.rst3
2 files changed, 4 insertions, 2 deletions
diff --git a/Lib/trace.py b/Lib/trace.py
index 7cb6f89..7886959 100755
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -265,8 +265,7 @@ class CoverageResults:
modulename = _modname(filename)
else:
dir = coverdir
- if not os.path.exists(dir):
- os.makedirs(dir)
+ os.makedirs(dir, exist_ok=True)
modulename = _fullmodname(filename)
# If desired, get a list of the line numbers which represent
diff --git a/Misc/NEWS.d/next/Library/2023-09-22-22-17-45.gh-issue-38807.m9McRN.rst b/Misc/NEWS.d/next/Library/2023-09-22-22-17-45.gh-issue-38807.m9McRN.rst
new file mode 100644
index 0000000..4219723
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-09-22-22-17-45.gh-issue-38807.m9McRN.rst
@@ -0,0 +1,3 @@
+Fix race condition in :mod:`trace`. Instead of checking if a directory
+exists and creating it, directly call :func:`os.makedirs` with the kwarg
+``exist_ok=True``.