microsoft / microsoft/vscode-python-debugger

Subprocess return code is incorrectly returned

オープン
#737 コメント 1 件 リアクション 0 件 担当者 1 名 GitHub で見る

@eleanorjboyd がすでに取り組んでいます。

2025年6月30日 から。

triage-needed
主要言語
TypeScript
スター
181
フォーク
126
平均マージ
2日 3時間
マージ済み PR(30日)
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. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。