microsoft / microsoft/vscode-python-debugger

Subprocess return code is incorrectly returned

未关闭
#737 1 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

@eleanorjboyd 已经在做这个了。

开始于 2025年6月30日。

triage-needed
主要语言
TypeScript
星标
181
派生
126
平均合并
2 天 3 小时
30 天内合并 PR
3

描述

Type: Bug

Behaviour

It appears that if a python subprocess is called from a debugged process and fails, the return code of the subprocess is not correctly passed on to the caller.

Steps to reproduce:

Example code experiment.py:

import subprocess
import sys

proc = subprocess.run(
    [sys.executable, "-mfred"],
    check=False,
)

print(f"returncode: {proc.returncode}")

If run on the command line, this produces

$ /opt/bb/bin/python3.12 ~/experiment.py 
/opt/bb/bin/python3.12: No module named fred
returncode: 1

If run via a launch config such as

        {
            "name": "Python Debugger: Experiment",
            "type": "debugpy",
            "request": "launch",
            "program": "/home/ralexander72/experiment.py",
            "console": "integratedTerminal"
        }

The output is

$  cd /home/ralexander72/test ; /usr/bin/env /opt/bb/bin/python3.12 /bb/data/ralexander72/vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 60207 -- /home/ralexander72/experiment.py
No module named fred
returncode: 0

Similarly, running with check=True produces an exception in the non-debugged case but apparent success when run via the debugger.

Adding "subProcess": false to the launch config produces the expected output, so presumably the problem is that the debugger is intercepting and debugging the subprocess (which is normally nice behaviour), but failing to pass on the correct return code after termination of the subprocess.

This is highly unexpected behaviour - could you please investigate?

Extension version: 2025.8.0
VS Code version: Code 1.101.1 (18e3a1ec544e6907be1e944a94c496e302073435, 2025-06-18T13:35:12.605Z)
OS version: Windows_NT x64 10.0.19045
Modes:
Connection to 'ssh-remote+mydev' could not be established
Remote OS version: Linux x64 4.18.0-553.50.1.el8_10.x86_64
Remote OS version: Linux x64 4.18.0-553.50.1.el8_10.x86_64

  • Python version (& distribution if applicable, e.g. Anaconda): 3.12.11
  • Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): Unknown
System Info
Item Value
CPUs Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (36 x 3000)
GPU Status 2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off
Load (avg) undefined
Memory (System) 127.80GB (95.16GB free)
Process Argv --folder-uri vscode-remote://ssh-remote%2Bmydev/bb/mbige/mbig_u28868517/ws/nextstep
Screen Reader no
VM 0%

Connection to 'ssh-remote+mydev' could not be established

Item Value
Remote SSH: mydev
OS Linux x64 4.18.0-553.50.1.el8_10.x86_64
CPUs Intel Xeon Processor (Cascadelake) (16 x 0)
Memory (System) 93.89GB (78.18GB free)
VM 0%
Item Value
Remote SSH: mydev
OS Linux x64 4.18.0-553.50.1.el8_10.x86_64
CPUs Intel Xeon Processor (Cascadelake) (16 x 0)
Memory (System) 93.89GB (78.18GB free)
VM 0%

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。