microsoft / debugpy

An implementation of the Debug Adapter Protocol for Python
https://pypi.org/project/debugpy/
Other
1.74k stars 128 forks source link

Fatal Python Error on debugpy.adapter shutdown #1604

Open amadanmath opened 2 weeks ago

amadanmath commented 2 weeks ago

Environment data

Problem description

I was trying to set up nvim-dap-python on NeoVim. It works until I execute the last instruction; when the debugger is expected to shut down, a Problem Report for Python window pops up. Investigating further, I could reproduce the error purely in command-line, without NeoVim:

Starting the adapter with

$ python -m debugpy.adapter

and letting it output the first three events (two telemetry outputs, one debugpySockets); then stopping it with Ctrl-C.

Actual behavior

After outputting two more events, a Fatal Python Error is raised.

Content-Length: 137

{"seq": 1, "type": "event", "event": "output", "body": {"category": "telemetry", "output": "ptvsd", "data": {"packageVersion": "1.8.1"}}}Content-Length: 139

{"seq": 2, "type": "event", "event": "output", "body": {"category": "telemetry", "output": "debugpy", "data": {"packageVersion": "1.8.1"}}}Content-Length: 134

{"seq": 3, "type": "event", "event": "debugpySockets", "body": {"sockets": [{"host": "127.0.0.1", "port": 56546, "internal": false}]}}^CContent-Length: 79

{"seq": 4, "type": "event", "event": "debugpySockets", "body": {"sockets": []}}Content-Length: 79

{"seq": 5, "type": "event", "event": "debugpySockets", "body": {"sockets": []}}Fatal Python error: _enter_buffered_busy: could not acquire lock for <_io.BufferedReader name='<stdin>'> at interpreter shutdown, possibly due to daemon threads
Python runtime state: finalizing (tstate=0x00007f7960f05070)

Current thread 0x00007ff85fe507c0 (most recent call first):
  <no Python frame>
Abort trap: 6

Additionally, Problem Report for Python window is shown, with the following information:

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               Python [46526]
Path:                  /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/Resources/Python.app/Contents/MacOS/Python
Identifier:            org.python.python
Version:               3.10.14 (3.10.14)
Code Type:             X86-64 (Native)
Parent Process:        bash [45361]
Responsible:           kitty [1666]
User ID:               501

Date/Time:             2024-06-20 17:13:04.8525 +0900
OS Version:            macOS 13.6.7 (22G720)
Report Version:        12
Bridge OS Version:     8.5 (21P5077)
Anonymous UUID:        F0A08029-0D16-756F-668F-C79E48053E28

Sleep/Wake UUID:       B19F6CAE-971F-49D7-99FF-29949992B0B2

Time Awake Since Boot: 430000 seconds
Time Since Wake:       29734 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Termination Reason:    Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process:   Python [46526]

Application Specific Information:
abort() called

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib              0x7ff81c73c196 __pthread_kill + 10
1   libsystem_pthread.dylib             0x7ff81c773ee6 pthread_kill + 263
2   libsystem_c.dylib                   0x7ff81c69ab45 abort + 123
3   Python                                 0x104496174 fatal_error_exit + 13
4   Python                                 0x104495fe2 fatal_error + 30
5   Python                                 0x104498530 _Py_FatalErrorFormat + 300
6   Python                                 0x1044fdab9 _enter_buffered_busy + 231
7   Python                                 0x1044fbb00 buffered_close + 52
8   Python                                 0x10438cc47 method_vectorcall_NOARGS + 87
9   Python                                 0x1043832ce PyObject_VectorcallMethod + 135
10  Python                                 0x1045038ac _io_TextIOWrapper_close + 299
11  Python                                 0x10438cc47 method_vectorcall_NOARGS + 87
12  Python                                 0x1043832ce PyObject_VectorcallMethod + 135
13  Python                                 0x1044f671b iobase_finalize + 236
14  Python                                 0x1043c90a5 PyObject_CallFinalizerFromDealloc + 60
15  Python                                 0x104500cdb textiowrapper_dealloc + 18
16  Python                                 0x1043b39e4 insertdict + 1038
17  Python                                 0x1043c7b02 _PyModule_ClearDict + 601
18  Python                                 0x104497350 finalize_modules + 1280
19  Python                                 0x104496b2d Py_FinalizeEx + 581
20  Python                                 0x1044b4a69 Py_RunMain + 498
21  Python                                 0x1044b5b94 Py_BytesMain + 42
22  dyld                                0x7ff81c41941f start + 1903

Thread 1:
0   libsystem_kernel.dylib              0x7ff81c735f7e read + 10
1   Python                                 0x1044b32c6 _Py_read + 114
2   Python                                 0x1044f8696 _io_FileIO_readinto + 159
3   Python                                 0x10438cb8e method_vectorcall_O + 89
4   Python                                 0x1043832ce PyObject_VectorcallMethod + 135
5   Python                                 0x1044fe5a4 _bufferedreader_raw_read + 181
6   Python                                 0x1044fe4d7 _bufferedreader_fill_buffer + 51
7   Python                                 0x1044fe206 _buffered_readline + 347
8   Python                                 0x10438ce80 method_vectorcall_FASTCALL + 93
9   Python                                 0x104457e9a call_function + 173
10  Python                                 0x104453ab9 _PyEval_EvalFrameDefault + 32837
11  Python                                 0x10444ac06 _PyEval_Vector + 361
12  Python                                 0x104384a2d method_vectorcall + 354
13  Python                                 0x1044de63f partial_vectorcall + 378
14  Python                                 0x104457e9a call_function + 173
15  Python                                 0x104453b92 _PyEval_EvalFrameDefault + 33054
16  Python                                 0x10444ac06 _PyEval_Vector + 361
17  Python                                 0x104457e9a call_function + 173
18  Python                                 0x104453ab9 _PyEval_EvalFrameDefault + 32837
19  Python                                 0x10444ac06 _PyEval_Vector + 361
20  Python                                 0x104457e9a call_function + 173
21  Python                                 0x104453ab9 _PyEval_EvalFrameDefault + 32837
22  Python                                 0x10444ac06 _PyEval_Vector + 361
23  Python                                 0x104384aa2 method_vectorcall + 471
24  Python                                 0x104453d81 _PyEval_EvalFrameDefault + 33549
25  Python                                 0x10444ac06 _PyEval_Vector + 361
26  Python                                 0x104457e9a call_function + 173
27  Python                                 0x104453ab9 _PyEval_EvalFrameDefault + 32837
28  Python                                 0x10444ac06 _PyEval_Vector + 361
29  Python                                 0x104457e9a call_function + 173
30  Python                                 0x104453ab9 _PyEval_EvalFrameDefault + 32837
31  Python                                 0x10444ac06 _PyEval_Vector + 361
32  Python                                 0x104384aa2 method_vectorcall + 471
33  Python                                 0x1044f36d3 thread_run + 115
34  Python                                 0x1044a81f3 pythread_wrapper + 36
35  libsystem_pthread.dylib             0x7ff81c7741d3 _pthread_start + 125
36  libsystem_pthread.dylib             0x7ff81c76fbd3 thread_start + 15

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x00007ff85fe507c0  rcx: 0x00007ff7bbf25ff8  rdx: 0x0000000000000000
  rdi: 0x0000000000000103  rsi: 0x0000000000000006  rbp: 0x00007ff7bbf26020  rsp: 0x00007ff7bbf25ff8
   r8: 0x00000000005f1680   r9: 0xffffffff00000000  r10: 0x0000000000000000  r11: 0x0000000000000246
  r12: 0x0000000000000103  r13: 0x00007ff7bbf26290  r14: 0x0000000000000006  r15: 0x0000000000000016
  rip: 0x00007ff81c73c196  rfl: 0x0000000000000246  cr2: 0x0000000000000000

Logical CPU:     0
Error Code:      0x02000148 
Trap Number:     133

Binary Images:
       0x103fd8000 -        0x103fdbfff org.python.python (3.10.14) <00fef16c-f414-3007-b17e-5c5d39c99317> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/Resources/Python.app/Contents/MacOS/Python
       0x10432b000 -        0x10459efff org.python.python (3.10.14, (c) 2001-2023 Python Software Foundation.) <b3157bb7-46b7-377f-b2aa-0f039ff3f421> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/Python
       0x10426f000 -        0x104276fff _json.cpython-310-darwin.so (*) <b67ae466-b793-3970-8aac-abde58c42ee8> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_json.cpython-310-darwin.so
       0x104296000 -        0x10429dfff zlib.cpython-310-darwin.so (*) <fac7861c-55fe-3456-9b81-5aaaead055fb> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/zlib.cpython-310-darwin.so
       0x104283000 -        0x104286fff _bz2.cpython-310-darwin.so (*) <34a50c37-37f7-3aba-a3b2-2b2dd104471d> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_bz2.cpython-310-darwin.so
       0x1042bd000 -        0x1042c4fff _lzma.cpython-310-darwin.so (*) <644c39e5-cef9-3c48-bada-1b2168aeb587> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_lzma.cpython-310-darwin.so
       0x1042fa000 -        0x104319fff liblzma.5.dylib (*) <74cc93b3-d104-3692-ab7a-7348e6fc3cdc> /usr/local/Cellar/xz/5.4.6/lib/liblzma.5.dylib
       0x1042aa000 -        0x1042adfff _opcode.cpython-310-darwin.so (*) <43b08d01-f707-3224-ab09-9066b622d5a5> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_opcode.cpython-310-darwin.so
       0x1042d1000 -        0x1042d4fff fcntl.cpython-310-darwin.so (*) <0ba11d5d-8d73-38fd-985d-7b125985c207> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/fcntl.cpython-310-darwin.so
       0x1042e1000 -        0x1042e4fff _posixsubprocess.cpython-310-darwin.so (*) <8fbb87cb-8216-3bc4-88b0-117e9c56fd01> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_posixsubprocess.cpython-310-darwin.so
       0x10493f000 -        0x104946fff select.cpython-310-darwin.so (*) <2ce74d76-9fc2-3bc0-8afd-7cc27be1c085> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/select.cpython-310-darwin.so
       0x10496a000 -        0x104975fff math.cpython-310-darwin.so (*) <773e93b7-f5e6-380f-bbed-ea03a9fdae8f> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/math.cpython-310-darwin.so
       0x104953000 -        0x10495afff binascii.cpython-310-darwin.so (*) <931a83c9-83b3-3397-a960-f6186a3e416c> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/binascii.cpython-310-darwin.so
       0x10499f000 -        0x1049aefff _datetime.cpython-310-darwin.so (*) <4ac29922-a35b-3f51-8d9f-63fa1f50eca4> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_datetime.cpython-310-darwin.so
       0x1049bf000 -        0x1049c6fff _struct.cpython-310-darwin.so (*) <c2f1001e-d4c2-31ba-9665-29d2cc159c17> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_struct.cpython-310-darwin.so
       0x1049d3000 -        0x1049dafff pyexpat.cpython-310-darwin.so (*) <ef73d690-90a6-30b8-9512-b6347c4d5ef3> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/pyexpat.cpython-310-darwin.so
       0x1049e7000 -        0x1049f6fff _socket.cpython-310-darwin.so (*) <b6d662de-672d-3b1c-bf39-4cb33646aa98> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_socket.cpython-310-darwin.so
       0x104a03000 -        0x104a0afff array.cpython-310-darwin.so (*) <6001ca1b-1538-3c3e-803f-feff0c6c2287> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/array.cpython-310-darwin.so
       0x104982000 -        0x104985fff _bisect.cpython-310-darwin.so (*) <485e81fc-ed82-3a46-9452-15a4ab1b467c> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_bisect.cpython-310-darwin.so
       0x104b17000 -        0x104b1afff _random.cpython-310-darwin.so (*) <61604403-c554-381f-95a3-ff00c9a92939> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_random.cpython-310-darwin.so
       0x104b27000 -        0x104b2efff _sha512.cpython-310-darwin.so (*) <5380019c-27e5-33c2-8b09-5b57cb06adb9> /usr/local/Cellar/python@3.10/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/lib-dynload/_sha512.cpython-310-darwin.so
    0x7ff81c734000 -     0x7ff81c76dfff libsystem_kernel.dylib (*) <e82b6d50-ac03-370d-a74d-eb1a2725b6c5> /usr/lib/system/libsystem_kernel.dylib
    0x7ff81c76e000 -     0x7ff81c779fff libsystem_pthread.dylib (*) <60b15e1f-39ea-33a1-8616-3af57dc1094a> /usr/lib/system/libsystem_pthread.dylib
    0x7ff81c61b000 -     0x7ff81c6a2ff7 libsystem_c.dylib (*) <a720129c-c1cf-3e62-9d76-aa6fa0d31333> /usr/lib/system/libsystem_c.dylib
    0x7ff81c413000 -     0x7ff81c4ab5ef dyld (*) <2faf54fd-58e6-360c-9bd8-2fbfe8be93d3> /usr/lib/dyld

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=290.2M resident=0K(0%) swapped_out_or_unallocated=290.2M(100%)
Writable regions: Total=970.5M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=970.5M(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Kernel Alloc Once                    8K        1 
MALLOC                           187.2M       19 
MALLOC guard page                   24K        5 
MALLOC_MEDIUM (reserved)         360.0M        3         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
STACK GUARD                          8K        2 
Stack                             32.0M        2 
VM_ALLOCATE                       7172K        8 
__DATA                            3579K      155 
__DATA_CONST                      6002K      119 
__DATA_DIRTY                       339K       57 
__LINKEDIT                       171.6M       22 
__OBJC_RO                         66.3M        1 
__OBJC_RW                         2013K        2 
__TEXT                           118.6M      172 
dyld private memory                260K        2 
shared memory                       20K        3 
===========                     =======  ======= 
TOTAL                              1.3G      574 
TOTAL, minus reserved VM space   594.7M      574 

-----------
Full Report
-----------

{"app_name":"Python","timestamp":"2024-06-20 17:13:04.00 +0900","app_version":"3.10.14","slice_uuid":"00fef16c-f414-3007-b17e-5c5d39c99317","build_version":"3.10.14","platform":1,"bundleID":"org.python.python","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 13.6.7 (22G720)","roots_installed":0,"name":"Python","incident_id":"6BD81D45-E1DC-4840-8115-3FE476A10970"}
{
  "uptime" : 430000,
  "procRole" : "Unspecified",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookPro16,4",
  "coalitionID" : 1645,
  "osVersion" : {
    "train" : "macOS 13.6.7",
    "build" : "22G720",
    "releaseType" : "User"
  },
  "captureTime" : "2024-06-20 17:13:04.8525 +0900",
  "incident" : "6BD81D45-E1DC-4840-8115-3FE476A10970",
  "pid" : 46526,
  "cpuType" : "X86-64",
  "roots_installed" : 0,
  "bug_type" : "309",
  "procLaunch" : "2024-06-20 17:12:59.5958 +0900",
  "procStartAbsTime" : 434724816762336,
  "procExitAbsTime" : 434730072530794,
  "procName" : "Python",
  "procPath" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/Resources\/Python.app\/Contents\/MacOS\/Python",
  "bundleInfo" : {"CFBundleShortVersionString":"3.10.14","CFBundleVersion":"3.10.14","CFBundleIdentifier":"org.python.python"},
  "storeInfo" : {"deviceIdentifierForVendor":"FA5450B9-64E2-5E63-BDBA-2BC691E52787","thirdParty":true},
  "parentProc" : "bash",
  "parentPid" : 45361,
  "coalitionName" : "net.kovidgoyal.kitty",
  "crashReporterKey" : "F0A08029-0D16-756F-668F-C79E48053E28",
  "responsiblePid" : 1666,
  "responsibleProc" : "kitty",
  "codeSigningID" : "",
  "codeSigningTeamID" : "",
  "codeSigningValidationCategory" : 0,
  "codeSigningTrustLevel" : 0,
  "wakeTime" : 29734,
  "bridgeVersion" : {"build":"21P5077","train":"8.5"},
  "sleepWakeUUID" : "B19F6CAE-971F-49D7-99FF-29949992B0B2",
  "sip" : "enabled",
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
  "termination" : {"flags":0,"code":6,"namespace":"SIGNAL","indicator":"Abort trap: 6","byProc":"Python","byPid":46526},
  "asi" : {"libsystem_c.dylib":["abort() called"]},
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":6231680,"threadState":{"r13":{"value":140701986874000},"rax":{"value":0},"rflags":{"value":582},"cpu":{"value":0},"r14":{"value":6},"rsi":{"value":6},"r8":{"value":6231680},"cr2":{"value":0},"rdx":{"value":0},"r10":{"value":0},"r9":{"value":18446744069414584320},"r15":{"value":22},"rbx":{"value":140704737462208,"symbolLocation":0,"symbol":"_main_thread"},"trap":{"value":133},"err":{"value":33554760},"r11":{"value":582},"rip":{"value":140703605965206,"matchesCrashFrame":1},"rbp":{"value":140701986873376},"rsp":{"value":140701986873336},"r12":{"value":259},"rcx":{"value":140701986873336},"flavor":"x86_THREAD_STATE","rdi":{"value":259}},"queue":"com.apple.main-thread","frames":[{"imageOffset":33174,"symbol":"__pthread_kill","symbolLocation":10,"imageIndex":21},{"imageOffset":24294,"symbol":"pthread_kill","symbolLocation":263,"imageIndex":22},{"imageOffset":523077,"symbol":"abort","symbolLocation":123,"imageIndex":23},{"imageOffset":1487220,"symbol":"fatal_error_exit","symbolLocation":13,"imageIndex":1},{"imageOffset":1486818,"symbol":"fatal_error","symbolLocation":30,"imageIndex":1},{"imageOffset":1496368,"symbol":"_Py_FatalErrorFormat","symbolLocation":300,"imageIndex":1},{"imageOffset":1911481,"symbol":"_enter_buffered_busy","symbolLocation":231,"imageIndex":1},{"imageOffset":1903360,"symbol":"buffered_close","symbolLocation":52,"imageIndex":1},{"imageOffset":400455,"symbol":"method_vectorcall_NOARGS","symbolLocation":87,"imageIndex":1},{"imageOffset":361166,"symbol":"PyObject_VectorcallMethod","symbolLocation":135,"imageIndex":1},{"imageOffset":1935532,"symbol":"_io_TextIOWrapper_close","symbolLocation":299,"imageIndex":1},{"imageOffset":400455,"symbol":"method_vectorcall_NOARGS","symbolLocation":87,"imageIndex":1},{"imageOffset":361166,"symbol":"PyObject_VectorcallMethod","symbolLocation":135,"imageIndex":1},{"imageOffset":1881883,"symbol":"iobase_finalize","symbolLocation":236,"imageIndex":1},{"imageOffset":647333,"symbol":"PyObject_CallFinalizerFromDealloc","symbolLocation":60,"imageIndex":1},{"imageOffset":1924315,"symbol":"textiowrapper_dealloc","symbolLocation":18,"imageIndex":1},{"imageOffset":559588,"symbol":"insertdict","symbolLocation":1038,"imageIndex":1},{"imageOffset":641794,"symbol":"_PyModule_ClearDict","symbolLocation":601,"imageIndex":1},{"imageOffset":1491792,"symbol":"finalize_modules","symbolLocation":1280,"imageIndex":1},{"imageOffset":1489709,"symbol":"Py_FinalizeEx","symbolLocation":581,"imageIndex":1},{"imageOffset":1612393,"symbol":"Py_RunMain","symbolLocation":498,"imageIndex":1},{"imageOffset":1616788,"symbol":"Py_BytesMain","symbolLocation":42,"imageIndex":1},{"imageOffset":25631,"symbol":"start","symbolLocation":1903,"imageIndex":24}]},{"id":6231705,"frames":[{"imageOffset":8062,"symbol":"read","symbolLocation":10,"imageIndex":21},{"imageOffset":1606342,"symbol":"_Py_read","symbolLocation":114,"imageIndex":1},{"imageOffset":1889942,"symbol":"_io_FileIO_readinto","symbolLocation":159,"imageIndex":1},{"imageOffset":400270,"symbol":"method_vectorcall_O","symbolLocation":89,"imageIndex":1},{"imageOffset":361166,"symbol":"PyObject_VectorcallMethod","symbolLocation":135,"imageIndex":1},{"imageOffset":1914276,"symbol":"_bufferedreader_raw_read","symbolLocation":181,"imageIndex":1},{"imageOffset":1914071,"symbol":"_bufferedreader_fill_buffer","symbolLocation":51,"imageIndex":1},{"imageOffset":1913350,"symbol":"_buffered_readline","symbolLocation":347,"imageIndex":1},{"imageOffset":401024,"symbol":"method_vectorcall_FASTCALL","symbolLocation":93,"imageIndex":1},{"imageOffset":1232538,"symbol":"call_function","symbolLocation":173,"imageIndex":1},{"imageOffset":1215161,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":32837,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":367149,"symbol":"method_vectorcall","symbolLocation":354,"imageIndex":1},{"imageOffset":1783359,"symbol":"partial_vectorcall","symbolLocation":378,"imageIndex":1},{"imageOffset":1232538,"symbol":"call_function","symbolLocation":173,"imageIndex":1},{"imageOffset":1215378,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":33054,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":1232538,"symbol":"call_function","symbolLocation":173,"imageIndex":1},{"imageOffset":1215161,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":32837,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":1232538,"symbol":"call_function","symbolLocation":173,"imageIndex":1},{"imageOffset":1215161,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":32837,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":367266,"symbol":"method_vectorcall","symbolLocation":471,"imageIndex":1},{"imageOffset":1215873,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":33549,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":1232538,"symbol":"call_function","symbolLocation":173,"imageIndex":1},{"imageOffset":1215161,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":32837,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":1232538,"symbol":"call_function","symbolLocation":173,"imageIndex":1},{"imageOffset":1215161,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":32837,"imageIndex":1},{"imageOffset":1178630,"symbol":"_PyEval_Vector","symbolLocation":361,"imageIndex":1},{"imageOffset":367266,"symbol":"method_vectorcall","symbolLocation":471,"imageIndex":1},{"imageOffset":1869523,"symbol":"thread_run","symbolLocation":115,"imageIndex":1},{"imageOffset":1561075,"symbol":"pythread_wrapper","symbolLocation":36,"imageIndex":1},{"imageOffset":25043,"symbol":"_pthread_start","symbolLocation":125,"imageIndex":22},{"imageOffset":7123,"symbol":"thread_start","symbolLocation":15,"imageIndex":22}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4361912320,
    "CFBundleShortVersionString" : "3.10.14",
    "CFBundleIdentifier" : "org.python.python",
    "size" : 16384,
    "uuid" : "00fef16c-f414-3007-b17e-5c5d39c99317",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/Resources\/Python.app\/Contents\/MacOS\/Python",
    "name" : "Python",
    "CFBundleVersion" : "3.10.14"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4365398016,
    "CFBundleShortVersionString" : "3.10.14, (c) 2001-2023 Python Software Foundation.",
    "CFBundleIdentifier" : "org.python.python",
    "size" : 2572288,
    "uuid" : "b3157bb7-46b7-377f-b2aa-0f039ff3f421",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/Python",
    "name" : "Python",
    "CFBundleVersion" : "3.10.14"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4364627968,
    "size" : 32768,
    "uuid" : "b67ae466-b793-3970-8aac-abde58c42ee8",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_json.cpython-310-darwin.so",
    "name" : "_json.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4364787712,
    "size" : 32768,
    "uuid" : "fac7861c-55fe-3456-9b81-5aaaead055fb",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/zlib.cpython-310-darwin.so",
    "name" : "zlib.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4364709888,
    "size" : 16384,
    "uuid" : "34a50c37-37f7-3aba-a3b2-2b2dd104471d",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_bz2.cpython-310-darwin.so",
    "name" : "_bz2.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4364947456,
    "size" : 32768,
    "uuid" : "644c39e5-cef9-3c48-bada-1b2168aeb587",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_lzma.cpython-310-darwin.so",
    "name" : "_lzma.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4365197312,
    "size" : 131072,
    "uuid" : "74cc93b3-d104-3692-ab7a-7348e6fc3cdc",
    "path" : "\/usr\/local\/Cellar\/xz\/5.4.6\/lib\/liblzma.5.dylib",
    "name" : "liblzma.5.dylib"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4364869632,
    "size" : 16384,
    "uuid" : "43b08d01-f707-3224-ab09-9066b622d5a5",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_opcode.cpython-310-darwin.so",
    "name" : "_opcode.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4365029376,
    "size" : 16384,
    "uuid" : "0ba11d5d-8d73-38fd-985d-7b125985c207",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/fcntl.cpython-310-darwin.so",
    "name" : "fcntl.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4365094912,
    "size" : 16384,
    "uuid" : "8fbb87cb-8216-3bc4-88b0-117e9c56fd01",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_posixsubprocess.cpython-310-darwin.so",
    "name" : "_posixsubprocess.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4371771392,
    "size" : 32768,
    "uuid" : "2ce74d76-9fc2-3bc0-8afd-7cc27be1c085",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/select.cpython-310-darwin.so",
    "name" : "select.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4371947520,
    "size" : 49152,
    "uuid" : "773e93b7-f5e6-380f-bbed-ea03a9fdae8f",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/math.cpython-310-darwin.so",
    "name" : "math.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4371853312,
    "size" : 32768,
    "uuid" : "931a83c9-83b3-3397-a960-f6186a3e416c",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/binascii.cpython-310-darwin.so",
    "name" : "binascii.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4372164608,
    "size" : 65536,
    "uuid" : "4ac29922-a35b-3f51-8d9f-63fa1f50eca4",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_datetime.cpython-310-darwin.so",
    "name" : "_datetime.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4372295680,
    "size" : 32768,
    "uuid" : "c2f1001e-d4c2-31ba-9665-29d2cc159c17",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_struct.cpython-310-darwin.so",
    "name" : "_struct.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4372377600,
    "size" : 32768,
    "uuid" : "ef73d690-90a6-30b8-9512-b6347c4d5ef3",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/pyexpat.cpython-310-darwin.so",
    "name" : "pyexpat.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4372459520,
    "size" : 65536,
    "uuid" : "b6d662de-672d-3b1c-bf39-4cb33646aa98",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_socket.cpython-310-darwin.so",
    "name" : "_socket.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4372574208,
    "size" : 32768,
    "uuid" : "6001ca1b-1538-3c3e-803f-feff0c6c2287",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/array.cpython-310-darwin.so",
    "name" : "array.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4372045824,
    "size" : 16384,
    "uuid" : "485e81fc-ed82-3a46-9452-15a4ab1b467c",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_bisect.cpython-310-darwin.so",
    "name" : "_bisect.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4373704704,
    "size" : 16384,
    "uuid" : "61604403-c554-381f-95a3-ff00c9a92939",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_random.cpython-310-darwin.so",
    "name" : "_random.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4373770240,
    "size" : 32768,
    "uuid" : "5380019c-27e5-33c2-8b09-5b57cb06adb9",
    "path" : "\/usr\/local\/Cellar\/python@3.10\/3.10.14\/Frameworks\/Python.framework\/Versions\/3.10\/lib\/python3.10\/lib-dynload\/_sha512.cpython-310-darwin.so",
    "name" : "_sha512.cpython-310-darwin.so"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703605932032,
    "size" : 237568,
    "uuid" : "e82b6d50-ac03-370d-a74d-eb1a2725b6c5",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703606169600,
    "size" : 49152,
    "uuid" : "60b15e1f-39ea-33a1-8616-3af57dc1094a",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703604781056,
    "size" : 557048,
    "uuid" : "a720129c-c1cf-3e62-9d76-aa6fa0d31333",
    "path" : "\/usr\/lib\/system\/libsystem_c.dylib",
    "name" : "libsystem_c.dylib"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703602651136,
    "size" : 624112,
    "uuid" : "2faf54fd-58e6-360c-9bd8-2fbfe8be93d3",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  }
],
  "sharedCache" : {
  "base" : 140703602028544,
  "size" : 21474836480,
  "uuid" : "5b024447-21cb-39dc-9946-0924a6000a4b"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=290.2M resident=0K(0%) swapped_out_or_unallocated=290.2M(100%)\nWritable regions: Total=970.5M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=970.5M(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nKernel Alloc Once                    8K        1 \nMALLOC                           187.2M       19 \nMALLOC guard page                   24K        5 \nMALLOC_MEDIUM (reserved)         360.0M        3         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nSTACK GUARD                          8K        2 \nStack                             32.0M        2 \nVM_ALLOCATE                       7172K        8 \n__DATA                            3579K      155 \n__DATA_CONST                      6002K      119 \n__DATA_DIRTY                       339K       57 \n__LINKEDIT                       171.6M       22 \n__OBJC_RO                         66.3M        1 \n__OBJC_RW                         2013K        2 \n__TEXT                           118.6M      172 \ndyld private memory                260K        2 \nshared memory                       20K        3 \n===========                     =======  ======= \nTOTAL                              1.3G      574 \nTOTAL, minus reserved VM space   594.7M      574 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "logWritingSignature" : "337a2a216d86340edec60e3a0da0f685be6b3294",
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "60da5e84ab0ca017dace9abf",
      "factorPackIds" : {

      },
      "deploymentId" : 240000008
    },
    {
      "rolloutId" : "62c751b6bcb0435c2153fe92",
      "factorPackIds" : {
        "SIRI_UNDERSTANDING_ASR_ASSISTANT" : "6317ae3a3d24842ff84fd83f",
        "SIRI_UNDERSTANDING_MORPHUN" : "64e514ddc83b9a3d50649ddc"
      },
      "deploymentId" : 240000366
    }
  ],
  "experiments" : [
    {
      "treatmentId" : "45f4e2a5-551b-4bc2-a2dc-19c244dda8f8",
      "experimentId" : "6643969b3099cf28e049862f",
      "deploymentId" : 400000002
    }
  ]
}
}

Expected behavior

No Fatal Python Error, and no Problem Report for Python window

Steps to reproduce:

  1. Run the adapter: python -m debugpy.adapter
  2. Abort the adapter using Ctrl-C.

I also tried with different versions of debugpy, all the way to debugpy==1.0.0, and I still get the same problem.

int19h commented 1 week ago

This is probably caused by the message reader background thread waiting on stdin.read() when KeyboardInterrupt happens on main thread. If so, I think it could be fixed by catching the exception there and pre-emptively os.close(stdin_fd) before exiting.

amadanmath commented 17 hours ago

I am not sure I understand it correctly, not knowing the structure of debugpy, but note that the same happens without KeyboardInterrupt, purely by executing the last line of the program from NeoVim's debugger (nvim-dap). So it seems it might be on any exit of pydebug, not just keyboard interrupted one. I don't know how to speak the pydebug protocol, so I can't test the hypothesis without the aid of an editor.