`set_trace`-releated deadlock when running inside Ansible with explicit listen-and-debug breakpoint
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Riproduci il problema con il plugin lookup di Ansible che contiene il blocco listen-and-wait di debugpy, quindi confrontalo con lo script hello-world fornito. Inizia da debugpy/_vendored/pydevd/pydevd.py, intorno a wait_for_ready_to_run(), e usa il launch.json allegato per la configurazione del client. Il lavoro è completato quando il collegamento durante l'esecuzione di Ansible non lascia più Variables in caricamento e i comandi del debugger non vanno più in timeout.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Environment data
- debugpy version: 1.8.1 (run
import debugpy; print(debugpy.__version__)if uncertain) - OS and version: Mac OS X Sonoma 14.2.1 (23C71)
- Python version: Python 3.11.7 that comes with Mac OS X
- Using VS Code version 1.86.1 (likely irrelevant, as I observe the same behavior with Emacs and dape.el)
Actual behavior
Upon attempting to attach the client,
- Variables → Locals keeps spinning inside VS Code
- Debugger is catatonic; every command times out (same when tried out of Emacs)
- Pressing C-c yields the following stack trace (even after waiting for several minutes):
^CTraceback (most recent call last):
File "/Users/quatrava/Dev/ops/xaasible-ops/ansible-deps-cache/python-libs/lib/python/site-packages/debugpy/_vendored/pydevd/pydevd.py", line 3489, in <module>
[ERROR]: User interrupted execution
main()
File "/Users/quatrava/Dev/ops/xaasible-ops/ansible-deps-cache/python-libs/lib/python/site-packages/debugpy/_vendored/pydevd/pydevd.py", line 3482, in main
globals = debugger.run(setup['file'], None, None, is_module)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/quatrava/Dev/ops/xaasible-ops/ansible-deps-cache/python-libs/lib/python/site-packages/debugpy/_vendored/pydevd/pydevd.py", line 2476, in run
self.wait_for_ready_to_run()
File "/Users/quatrava/Dev/ops/xaasible-ops/ansible-deps-cache/python-libs/lib/python/site-packages/debugpy/_vendored/pydevd/pydevd.py", line 838, in wait_for_ready_to_run
self._py_db_command_thread_event.wait(0.1)
File "/usr/local/Cellar/python@3.11/3.11.7/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 629, in wait
signaled = self._cond.wait(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/python@3.11/3.11.7/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 331, in wait
gotit = waiter.acquire(True, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
Expected behavior
Debugger session should proceed as usual, even though some slow JSON-RPCs are expected (i.e. because my test case has large visible variables). Note that that is exactly what happens if instead of running Ansible, I run a hello-world Python script that features the same debugpy stanza to await debugger connect, i.e.
import debugpy; debugpy.listen(5678); debugpy.wait_for_client(); debugpy.breakpoint()
print("hello world")
Steps to reproduce:
- Configure VS Code as per the documentation. My
.vscode/launch.jsonis attached below - Install Ansible
- Create
lookup_plugins/my_python_lookup.pyand add the following code inside:from ansible.plugins.lookup import LookupBase class LookupModule(LookupBase): def run(self, terms, variables=None, **kwargs): import debugpy; debugpy.listen(5678); debugpy.wait_for_client(); debugpy.breakpoint() return ["toto"] - Prepare a trivial Ansible playbook that calls
'{{ lookup("my_python_lookup") }}'somewhere - Run the Ansible playbook
Attachments
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Débogueur Python : Attachement à distance",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
}
]
}
- 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 ·