Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-101283: Try to load the fallback cmd.exe by an absolute path #101286

Merged
merged 25 commits into from Feb 8, 2023

Conversation

arhadthedev
Copy link
Member

@arhadthedev arhadthedev commented Jan 24, 2023

@arhadthedev
Copy link
Member Author

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'D:\a\cpython\cpython\build\test_python_2036�\test_python_worker_5676�'

Looks like a fluke; restarting.

@arhadthedev arhadthedev marked this pull request as ready for review January 24, 2023 13:46
Lib/subprocess.py Outdated Show resolved Hide resolved
Lib/subprocess.py Outdated Show resolved Hide resolved
Co-authored-by: Eryk Sun <eryksun@gmail.com>
Lib/subprocess.py Outdated Show resolved Hide resolved
@arhadthedev
Copy link
Member Author

@eryksun Thank you for improvements! Since none of my code is left, I've reattributed the news entry to you.

Lib/subprocess.py Outdated Show resolved Hide resolved
Co-authored-by: Eryk Sun <eryksun@gmail.com>
@eryksun eryksun requested a review from a team January 24, 2023 17:09
@arhadthedev arhadthedev marked this pull request as draft January 24, 2023 18:48
@arhadthedev arhadthedev marked this pull request as ready for review January 24, 2023 18:48
Lib/subprocess.py Outdated Show resolved Hide resolved
# cmd.exe is missing, or the system environment
# variables are broken, or they're undefined and the
# system is installed into a non-standard location.
# This is highly unlikely, and we cannot help here.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should a RuntimeWarning be raised or logging.warn call made in this case as an FYI?

Copy link
Contributor

@eryksun eryksun Jan 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good idea. How about this?

                        comspec = 'cmd.exe'
                        warnings.warn(f'spawning "{comspec}" using a '
                                      'relative file path',
                                      RuntimeWarning)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we keep the fallback at all rather than just make it an error, something like that. probably with a stacklevel= set.

related to my other comment, i wouldn't want to add a new warning in a security backport either.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Feb 8, 2023
…ue on Windows (pythonGH-101286)

(cherry picked from commit 23751ed)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
@miss-islington
Copy link
Contributor

Thanks @arhadthedev for the PR, and @zooba for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒🤖

@miss-islington
Copy link
Contributor

Sorry @arhadthedev and @zooba, I had trouble checking out the 3.11 backport branch.
Please retry by removing and re-adding the "needs backport to 3.11" label.
Alternatively, you can backport using cherry_picker on the command line.
cherry_picker 23751ed826ee63fb486e874ec25934ea87dd8519 3.11

@miss-islington
Copy link
Contributor

Thanks @arhadthedev for the PR, and @zooba for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒🤖

@bedevere-bot
Copy link

GH-101711 is a backport of this pull request to the 3.11 branch.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Feb 8, 2023
…ue on Windows (pythonGH-101286)

(cherry picked from commit 23751ed)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
@zooba
Copy link
Member

zooba commented Feb 8, 2023

Bah, just noticed in the backports that now there's a case where comspec may be used without being defined. We should fix and backport that immediately

@zooba
Copy link
Member

zooba commented Feb 8, 2023

Turns out I can commit directly to the backports, so those will be fine. But we need an else: comspec = executable branch in main

@bedevere-bot
Copy link

GH-101713 is a backport of this pull request to the 3.7 branch.

zooba pushed a commit to zooba/cpython that referenced this pull request Feb 8, 2023
@zooba
Copy link
Member

zooba commented Feb 8, 2023

GH-101712 is the comspec=executable fix for main.

@@ -111,6 +111,14 @@ underlying :class:`Popen` interface can be used directly.
Added the *text* parameter, as a more understandable alias of *universal_newlines*.
Added the *capture_output* parameter.

.. versionchanged:: 3.11.2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This version number is wrong. 3.11.2 was released before this change was merged. As this PR is in the main branch, listing it as 3.12 in these docs is more appropriate. Documentation readers should not be expected to know which patch release versions came before a major release.

We lack the ability to list all versions in versionchanged markers in our docs so have done it this way elsewhere as well when a visible API change has been made in patch releases.

@arhadthedev
Copy link
Member Author

Bah, just noticed in the backports that now there's a case where comspec may be used without being defined. We should fix and backport that immediately

This version number is wrong. 3.11.2 was released before this change was merged. As this PR is in the main branch, listing it as 3.12 in these docs is more appropriate. Documentation readers should not be expected to know which patch release versions came before a major release.

Got working on it; the PR will follow in a few hours.

@arhadthedev
Copy link
Member Author

Bah, just noticed in the backports that now there's a case where comspec may be used without being defined. We should fix and backport that immediately

To be fixed by gh-101712. Thank you, @zooba!

This version number is wrong. 3.11.2 was released before this change was merged. As this PR is in the main branch, listing it as 3.12 in these docs is more appropriate. Documentation readers should not be expected to know which patch release versions came before a major release.

Addressed in gh-101728.

ambv pushed a commit that referenced this pull request Feb 9, 2023
…ue on Windows (GH-101286) (#101709)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
Co-authored-by: Steve Dower <steve.dower@microsoft.com>
ambv pushed a commit that referenced this pull request Feb 9, 2023
…ue on Windows (GH-101286) (#101710)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
Co-authored-by: Steve Dower <steve.dower@microsoft.com>
ambv added a commit that referenced this pull request Feb 9, 2023
…ue on Windows (GH-101286) (#101713)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Co-authored-by: Oleg Iarygin <dralife@yandex.ru>
carljm added a commit to carljm/cpython that referenced this pull request Feb 9, 2023
* main: (82 commits)
  pythongh-101670: typo fix in PyImport_ExtendInittab() (python#101723)
  pythonGH-99293: Document that `Py_TPFLAGS_VALID_VERSION_TAG` shouldn't be used. (#pythonGH-101736)
  no-issue: Add Dong-hee Na as the cjkcodecs codeowner (pythongh-101731)
  pythongh-101678: Merge math_1_to_whatever() and math_1() (python#101730)
  pythongh-101678: refactor the math module to use special functions from c11 (pythonGH-101679)
  pythongh-85984: Remove legacy Lib/pty.py code. (python#92365)
  pythongh-98831: Use opcode metadata for stack_effect() (python#101704)
  pythongh-101283: Version was just released, so should be changed in 3.11.3 (pythonGH-101719)
  pythongh-101283: Fix use of unbound variable (pythonGH-101712)
  pythongh-101283: Improved fallback logic for subprocess with shell=True on Windows (pythonGH-101286)
  pythongh-101277: Port more itertools static types to heap types (python#101304)
  pythongh-98831: Modernize CALL and family (python#101508)
  pythonGH-101696: invalidate type version tag in `_PyStaticType_Dealloc` (python#101697)
  pythongh-100221: Fix creating dirs in `make sharedinstall` (pythonGH-100329)
  pythongh-101670: typo fix in PyImport_AppendInittab() (pythonGH-101672)
  pythongh-101196: Make isdir/isfile/exists faster on Windows (pythonGH-101324)
  pythongh-101614: Don't treat python3_d.dll as a Python DLL when checking extension modules for incompatibility (pythonGH-101615)
  pythongh-100933: Improve `check_element` helper in `test_xml_etree` (python#100934)
  pythonGH-101578: Normalize the current exception (pythonGH-101607)
  pythongh-47937: Note that Popen attributes are read-only (python#93070)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type-security A security issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants