microsoft / microsoft/vscode-python-debugger
Attach process picker still hangs without WMIC because windows-process-tree loader misses node_modules.asar
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- TypeScript
- Estrellas
- 181
- Forks
- 126
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 3
Descripción
Environment
- Python Debugger:
2026.7.12401012(pre-release) - VS Code:
1.135.0(08d4889f9ec4a1685d257b9b95de036c8e1ce1e5, x64) - OS: Windows 11 Pro x64,
10.0.26200 - WMIC: not installed
Reproduction
Use the generated attach configuration:
{
"name": "Python Debugger: Attach using Process Id",
"type": "debugpy",
"request": "attach",
"processId": "${command:pickProcess}"
}
Start debugging and wait for the process picker.
Expected behavior
A Quick Pick containing the running processes is displayed.
Actual behavior
The progress indicator keeps running, but the process picker never appears. The extension host log contains:
Error: spawn wmic ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:287:19)
at onErrorNT (node:internal/child_process:508:16)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
Using a literal PID works.
Cause found locally
The current implementation added in #1030 loads the native module from this path:
const wpcPath = path.join(env.appRoot, 'node_modules', '@vscode', 'windows-process-tree');
const nodeRequire = eval('require') as NodeJS.Require;
return nodeRequire(wpcPath);
In the packaged VS Code 1.135.0 installation, @vscode/windows-process-tree is not present under the physical node_modules directory. It is packaged at:
<env.appRoot>/node_modules.asar/@vscode/windows-process-tree
with its native files under node_modules.asar.unpacked.
Loading both paths with VS Code's Electron/Node runtime produces:
<env.appRoot>/node_modules/@vscode/windows-process-tree
-> MODULE_NOT_FOUND
<env.appRoot>/node_modules.asar/@vscode/windows-process-tree
-> loads successfully
-> exports ProcessDataFlag, getAllProcesses, getProcessList, etc.
The native loader exception is swallowed by the broad catch, so the provider silently falls back to WMIC. WMIC is no longer installed by default on current Windows builds, and that second failure leaves the picker waiting indefinitely.
Suggested direction
- Resolve the packaged ASAR location as well as development/older layouts.
- Avoid falling back exclusively to deprecated WMIC; PowerShell/CIM could provide a non-native fallback.
- Log the original
windows-process-treeloading exception so this failure mode is visible.
Related: #744, #867, #899, #991, #1030.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza por el cargador de process-picker que construye la ruta de @vscode/windows-process-tree y sigue cómo su catch amplio selecciona WMIC. Reproduce la disposición empaquetada con node_modules.asar y node_modules.asar.unpacked y, después, verifica que la enumeración de procesos funcione sin WMIC y que los fallos de carga sigan siendo visibles en el extension host log.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- node.js, typescript
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 58/100