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

Debugger Hangs on check_output #502

Open
1John419 opened this issue Nov 14, 2024 · 3 comments
Open

Debugger Hangs on check_output #502

1John419 opened this issue Nov 14, 2024 · 3 comments
Assignees
Labels
triage-needed Needs assignment to the proper sub-team

Comments

@1John419
Copy link

from subprocess import check_output

command = r'dir'
output = check_output(command, shell=True)
print(output)

This hangs in the debugger in 2024.12.0. However, it runs as expected from the command line outside of vscode.

Works fine in 2024.10.0.

@github-actions github-actions bot added the triage-needed Needs assignment to the proper sub-team label Nov 14, 2024
@eleanorjboyd
Copy link
Member

Hi! Can you include the config you use from launch.json to run this in the debugger? Do you know which line it hangs on in the debugger?

@1John419
Copy link
Author

1John419 commented Nov 14, 2024

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Py",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
    },
    {
      "name": "Py redirect",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "args": [">", "${relativeFileDirname}/output.txt"]
    },
  ]
}

Windows 10 Pro 64-bit
Python 3.12.2 64-bit
VS Code 1.95.2

As stated, debugger hangs attempting to execute this command:

output = check_output(command, shell=True)

Regression. Runs without issue using version 2024.10.0. Consistently hangs using version 2024.12.0.

@mheguy
Copy link

mheguy commented Nov 26, 2024

I was running into a similar issue. I had consistent reproduction with a similar script, though mine used Popen.

As a one-liner: import subprocess;subprocess.Popen(["git"]).communicate()

I narrowed down where things were blocking. It was line 1205 of subprocess.py: https://github.com/python/cpython/blob/6da9d252ac39d53342455a17bfec7b1087fba697/Lib/subprocess.py#L1205
It just never returned.

However, I tried to reproduce @1John419's example, including using Python 3.12.2. This involved deleting my virtual environment. Since then, I've been unable to reproduce the issue of subprocess not returning. So maybe it was some weird caching issue? Hard to know really, but like John, I only had the behaviour with 2024.12.0 and not with 2024.10.0.


I still have an issue that seems related (let me know if you want a distinct ticket for it).

When I change "git" to a command that is invalid, pydevd raises an exception.

[14:18:15.406]-[D:/git/transcription-bot]-[add-wiki-maintenance]-[✓ 64ms]
└─$  & 'd:\git\transcription-bot\.venv\Scripts\python.exe' 'c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher' '58371' '--' 'D:\git\transcription-bot\repro.py' 
0.42s - Error on build_exception_info_response.
Traceback (most recent call last):
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 1533, in build_exception_info_response
    stack_str = "".join(stack_summary.format())
                        ~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\Matthew\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\traceback.py", line 749, in format
    formatted_frame = self.format_frame_summary(frame_summary, colorize=colorize)
  File "C:\Users\Matthew\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\traceback.py", line 553, in format_frame_summary
    last_line = all_lines_original[frame_summary.end_lineno - frame_summary.lineno]
                ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IndexError: list index out of range
Traceback (most recent call last):
  File "C:\Users\Matthew\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\runpy.py", line 198, in _run_module_as_main
    return _run_code(code, main_globals, None,
                     "__main__", mod_spec)
  File "C:\Users\Matthew\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\runpy.py", line 88, in _run_code
    exec(code, run_globals)
    ~~~~^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 71, in <module>
    cli.main()
    ~~~~~~~~^^
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 501, in main
    run()
    ~~~^^
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 351, in run_file
    runpy.run_path(target, run_name="__main__")
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 310, in run_path
    return _run_module_code(code, init_globals, run_name, pkg_name=pkg_name, script_name=fname)
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 127, in _run_module_code
    _run_code(code, mod_globals, init_globals, mod_name, mod_spec, pkg_name, script_name)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 118, in _run_code
    exec(code, run_globals)
    ~~~~^^^^^^^^^^^^^^^^^^^
  File "D:\git\transcription-bot\repro.py", line 3, in <module>
    subprocess.Popen(["bloopsie"], stdout=subprocess.PIPE).communicate()
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Matthew\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\subprocess.py", line 1035, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                        pass_fds, cwd, env,
                        ^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
                        gid, gids, uid, umask,
                        ^^^^^^^^^^^^^^^^^^^^^^
                        start_new_session, process_group)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Matthew\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\subprocess.py", line 1547, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
                             # no special security
                             ^^^^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
                             cwd,
                             ^^^^
                             startupinfo)
                             ^^^^^^^^^^^^
  File "c:\Users\Matthew\.vscode\extensions\ms-python.debugpy-2024.12.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\_pydev_bundle\pydev_monkey.py", line 914, in new_CreateProcess
    return getattr(_subprocess, original_name)(app_name, cmd_line, *args)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] The system cannot find the file specified

My setup:
Windows 11 Pro version 23H2
Python 3.13.0
Extension 2024.12.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage-needed Needs assignment to the proper sub-team
Projects
None yet
Development

No branches or pull requests

3 participants