Specific characters in path of parent directories of file causes debugger to crash.
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 28/100
Direzione di ricerca
Inizia riproducendo il problema con i percorsi e i comandi della directory padre riportati nella segnalazione, quindi segui il traceback attraverso gli entry point debugpy/launcher, server/cli.py e il pydevd_runpy.py vendored. Il lavoro è completato quando il debug funziona per i file nelle directory che contengono i caratteri segnalati, senza errori della shell o FileNotFoundError; l’issue non indica né un test del repository né un file di implementazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
I've managed to break the path parsing. Specifically, including certain characters in the parent directories of the file being debugged causes the debugger to crash.
I don't know what specific characters cause this, but I'll update the report when(/if) I do.
Reproduction
-
Directory-Caused Crash
The undermentioned path, which contains a normal filename (
testfile.py) but an abnormally named immediate parent directory:/home/RokeJulianLockhart/Documents/ [-] `{title: "Code", id: ""}`{.JSON5}.dir/testfile.py...causes
ms-python.debugpyto crash:RokeJulianLockhart@sayw4i:~/Documents$ cd /home/RokeJulianLockhart/Documents/\ \ \[-\]\`\{title:\ \"Code\",id:\ \"\"\}\`\{.JSON5\}.dir ; /usr/bin/env /usr/bin/python3 /home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 47225 -- /home/RokeJulianLockhart/Documents/\ \ \[-\]\`\{title:\ \"Code\",id:\ \"\"\}\`\{.JSON5\}.dir/testfile.py bash: cd: /home/RokeJulianLockhart/Documents/ [-]`{title: "Code",id: ""}`{.JSON5}.dir: No such file or directory Traceback (most recent call last): File "/usr/lib64/python3.12/runpy.py", line 198, in _run_module_as_main return _run_code(code, main_globals, None, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.12/runpy.py", line 88, in _run_code exec(code, run_globals) File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/__main__.py", line 71, in <module> cli.main() File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 486, in main run() File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 336, in run_file runpy.run_path(target, run_name="__main__") File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 320, in run_path code, fname = _get_code_from_file(run_name, path_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 289, in _get_code_from_file with io_open_code(decoded_path) as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/home/RokeJulianLockhart/Documents/ [-]`{title: "Code",id: ""}`{.JSON5}.dir/testfile.py' RokeJulianLockhart@sayw4i:~/Documents$Merely one directory in the absolute path of the file need contain such characters for the parsing to fail, as the undermentioned "Terminal" log from
ms-python.debugpydemonstrates:RokeJulianLockhart@sayw4i:~/Documents$ cd /home/RokeJulianLockhart/Documents/\ \ \[-\]\`\{title:\ \"Code\",id:\ \"\"\}\`\{.JSON5\}.dir/test_directory ; /usr/bin/env /usr/bin/python3 /home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 47783 -- /home/RokeJulianLockhart/Documents/\ \ \[-\]\`\{title:\ \"Code\",id:\ \"\"\}\`\{.JSON5\}.dir/test_directory/test_file.py bash: cd: /home/RokeJulianLockhart/Documents/ [-]`{title: "Code",id: ""}`{.JSON5}.dir/test_directory: No such file or directory Traceback (most recent call last): File "/usr/lib64/python3.12/runpy.py", line 198, in _run_module_as_main return _run_code(code, main_globals, None, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.12/runpy.py", line 88, in _run_code exec(code, run_globals) File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/__main__.py", line 71, in <module> cli.main() File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 486, in main run() File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 336, in run_file runpy.run_path(target, run_name="__main__") File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 320, in run_path code, fname = _get_code_from_file(run_name, path_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 289, in _get_code_from_file with io_open_code(decoded_path) as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/home/RokeJulianLockhart/Documents/ [-]`{title: "Code",id: ""}`{.JSON5}.dir/test_directory/test_file.py' RokeJulianLockhart@sayw4i:~/Documents$ -
If I put the file deep enough (like this example) it completely breaks. Enter doesn't work because the path is incorrectly escaped, so
^Cis necessary to exit the transient debug state:RokeJulianLockhart@sayw4i:~/Software/Git/GitLab.com/RokeJulianLockhart/sg5n9q/ [-] `{title: "Non-Metadata", id: "s1gvg2"}`{.JSON5}.dir/ [-] `{title: "Technical", id: "s20cxw"}`{.JSON5}.dir/ [-] `{title: "Applications", id: ""}`{.JSON5}.dir/ [-] `{title: "Configurator", id: "s3wrcl"}`{.JSON5}.dir/ [-] `{title: "Code", id: ""}`{.JSON5}.dir$ cd /home/RokeJulianLockhart/Software/Git/GitLab.com/RokeJulianLockhart/sg5n9q/\ \ \[-]\ `\{title\:\ \"\`\{title:\ \"Non-Metadata\",id:\ \"s1gvg2\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Technical\",id:\ \"s20cxw\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Applications\",id:\ \"\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Configurator\",id:\ \"s3wrcl\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Code\",id:\ \"\"\}\`\{.JSON5\}.dir ; /usr/bin/env /usr/bin/python3 /home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 39897 -- /home/RokeJulianLockhart/Software/Git/GitLab.com/RokeJulianLockhart/sg5n9q/\ \ \[-\]\`\{title:\ \"Non-Metadata\",id:\ \"s1gvg2\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Technical\",id:\ \"s20cxw\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Applications\",id:\ \"\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Configurator\",id:\ \"s3wrcl\"\}\`\{.JSON5\}.dir/\ \ \[-\]\`\{title:\ \"Code\",id:\ \"\"\}\`\{.JSON5\}.dir/.\ \[-\]\`\`\{title:\ \"\`platform.uname\(\)\`\{.Py\}\ Field\ Output\",id:\ \"sgskr5\"\}\`\`\{.JSON5\}.txt.Py > > ^C RokeJulianLockhart@sayw4i:~/Software/Git/GitLab.com/RokeJulianLockhart/sg5n9q/ [-] `{title: "Non-Metadata", id: "s1gvg2"}`{.JSON5}.dir/ [-] `{title: "Technical", id: "s20cxw"}`{.JSON5}.dir/ [-] `{title: "Applications", id: ""}`{.JSON5}.dir/ [-] `{title: "Configurator", id: "s3wrcl"}`{.JSON5}.dir/ [-] `{title: "Code", id: ""}`{.JSON5}.dir$This causes https://github.com/microsoft/debugpy/issues/1677 to occur:
-
Debugger Functioning with Unusual Filename
Note that this doesn't apply to the file's name. Consider the undermentioned example:
/home/RokeJulianLockhart/Documents/. [-] ``{title: "`platform.uname()`{.Py} Field Output", id: "sgskr5"}``{.JSON5}.txt.PyAs the undermentioned "Terminal" log demonstrates, it functions:
RokeJulianLockhart@sayw4i:~/Documents$ cd /home/RokeJulianLockhart/Documents ; /usr/bin/env /usr/bin/python3 /home/RokeJulianLockhart/.vscode-insiders/extensions/ms-python.debugpy-2024.11.2024082901-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 38369 -- /home/RokeJulianLockhart/Documents/.\ \[-\]\ \`\`\{title\:\ \"\`platform.uname\(\)\`\{.Py\}\ Field\ Output\"\,\ id\:\ \"sgskr5\"\}\`\`\{.JSON5\}.txt.Py \`\`\{title:\ \"\`platform.uname\(\)\`\{.Py\}\ Field\ Output\",id:\ \"sgskr5\"\}\`\`\{.JSON5\}.txt.Py for k, v in platform_uname_as_dict.items() system = Linux node = sayw4i release = 6.10.10-200.fc40.x86_64 version = microsoft/vscode-python-debugger#1 SMP PREEMPT_DYNAMIC Thu Sep 12 18:26:09 UTC 2024 machine = x86_64 processor = RokeJulianLockhart@sayw4i:~/Documents$
Environment
-
Filename Character Support
One must be using a filesystem and OS that support such characters. I use BTRFS on Fedora 40, but anything comparable should work. ^2
-
Versions
-
Code
-
#!/usr/bin/env sh rpm -q 'code' 'code-insiders' -
code-1.93.1-1726079369.el8.x86_64 code-insiders-1.94.0-1726207949.el8.x86_64
-
-
Debugger
marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/debugpy/2024.11.2024082901/vspackage?targetPlatform=linux-x64^1
-
Miscellaneous
Potentially related to https://github.com/microsoft/vscode-python-debugger/issues/233#issue-2152958262, although I doubt it, because /home/RokeJulianLockhart/Documents/Text File.txt.py works.
- Lingua principale
- Python
- Stelle
- 2.5k
- Fork
- 202
- Merge medio
- 5g 1h
- PR unite (30g)
- 1
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/debugpy
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Document "rules"-option Apertadocumentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Adapter bootstrap fails with ConnectionRefusedError on WSL2 VirtioProxy or hostAddressLoopback Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
Tutte le issue di microsoft/debugpy
Issue simili
-
area: harness bug status: needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Human-Agent-Society/reef#625 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
learningequality/kolibri#15351 · 2 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Name consistency Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
eellak/triplestore#65 · 1 commento ·