From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 8 Aug 2024 20:37:49 +0000 (+0200) Subject: [3.13] GH-118943: Handle races when moving jit_stencils.h (GH-122709) X-Git-Tag: v3.13.0rc2~170 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27a529277486c770a5a8ef2a01c151b5feeb2eca;p=thirdparty%2FPython%2Fcpython.git [3.13] GH-118943: Handle races when moving jit_stencils.h (GH-122709) (cherry picked from commit 44659d392751f0161a0f958fec39ad013da45427) Co-authored-by: Miro HronĨok Co-authored-by: Kirill Podoprigora --- diff --git a/Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst b/Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst new file mode 100644 index 000000000000..997c990a96e4 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst @@ -0,0 +1,3 @@ +Fix a possible race condition affecting parallel builds configured with +``--enable-experimental-jit``, in which :exc:`FileNotFoundError` could be caused by +another process already moving ``jit_stencils.h.new`` to ``jit_stencils.h``. diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py index 5604c429bcf8..73d10a128756 100644 --- a/Tools/jit/_targets.py +++ b/Tools/jit/_targets.py @@ -221,7 +221,12 @@ class _Target(typing.Generic[_S, _R]): file.write("\n") for line in _writer.dump(stencil_groups): file.write(f"{line}\n") - jit_stencils_new.replace(jit_stencils) + try: + jit_stencils_new.replace(jit_stencils) + except FileNotFoundError: + # another process probably already moved the file + if not jit_stencils.is_file(): + raise finally: jit_stencils_new.unlink(missing_ok=True)