Closed waivek closed 2 years ago
When launching vimspector or using the balloon eval feature, the character "ō" causes a UnicodeEncodeError in python.
Reproducable in Vim
Yes
Reproducable with sample project
Open a python file with the contents:
japanese_name = "Yoshifumi Kondō" raise Exception
Launch vimspector using: :call vimspector#LaunchWithSettings({ 'configuration': 'run' })
:call vimspector#LaunchWithSettings({ 'configuration': 'run' })
Expected no error messages during startup / balloon eval.
A vim error trace is produced with the following output
Error detected while processing function <SNR>156__OnServerData: line 6: --- Logging error --- Traceback (most recent call last): File "C:\Program Files\Python310\Lib\logging\__init__.py", line 1101, in emit stream.write(msg + self.terminator) File "C:\Program Files\Python310\Lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u014d' in position 336: character maps to <undefined> Call stack: File "<string>", line 1, in <module> File "C:\Users\vivek\vimfiles\plugged\vimspector\python3\vimspector\debug_session.py", line 463, in OnChannelData self._connection.OnData( data ) File "C:\Users\vivek\vimfiles\plugged\vimspector\python3\vimspector\debug_adapter_connection.py", line 179, in OnData self._ReadBody() File "C:\Users\vivek\vimfiles\plugged\vimspector\python3\vimspector\debug_adapter_connection.py", line 257, in _ReadBody self._logger.debug( 'Message received: {0}'.format( message ) ) Message: 'Message received: {\'seq\': 24, \'type\': \'response\', \'request_seq\': 15, \'success\': True, \'command\': \'variables\', \'body\': {\'variables\': [{\'name\': \'special variables\', \'value\': \'\', \'type\': \'\', \'evaluateName\': \'special variables\', \'variablesReference\': 7}, {\'name\': \'japanese_name\', \'value\': "\'Yoshifumi Kondō\'", \'type\': \'str\', \'evaluateName\': \'japanese_name\', \'variablesReference\': 0, \'presentationHint\': {\'attributes\': [\'rawString\']}}]}}' Arguments: ()
No response
Plugin Manager (git clone)
3378018bc1cdd1d9b70734c3e970bc52fd983415
Vimspector Debug Info -------------------------------------------------------------------------------- ConnectionType: job Adapter: -------------------------------------------------------------------------------- { "command": [ "C:\\Program Files\\Python310\\python.exe", "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\gadgets\\windows/debugpy/build/lib/debugpy/adapter" ], "configuration": { "python": "C:\\Program Files\\Python310\\python.exe", "subProcess": false }, "name": "debugpy", "env": {}, "cwd": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python" } -------------------------------------------------------------------------------- Configuration: -------------------------------------------------------------------------------- { "adapter": "debugpy", "configuration": { "request": "launch", "type": "python", "cwd": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python", "program": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py", "stopOnEntry": false, "console": "integratedTerminal", "justMyCode": false, "purpose": [ "debug-in-terminal" ] }, "breakpoints": { "exception": { "raised": "N", "uncaught": "", "userUnhandled": "" } } } -------------------------------------------------------------------------------- API Prefix: Launch/Init: True / True Workspace Root: C:\Users\vivek\vimfiles\plugged\vimspector\support\test\python\simple_python Launch Config: -------------------------------------------------------------------------------- { "python": "C:\\Program Files\\Python310\\python.exe", "subProcess": false, "request": "launch", "type": "python", "cwd": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python", "program": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py", "stopOnEntry": false, "console": "integratedTerminal", "justMyCode": false, "purpose": [ "debug-in-terminal" ], "name": "test" } -------------------------------------------------------------------------------- Server Capabilities: -------------------------------------------------------------------------------- { "supportsCompletionsRequest": true, "supportsConditionalBreakpoints": true, "supportsConfigurationDoneRequest": true, "supportsDebuggerProperties": true, "supportsDelayedStackTraceLoading": true, "supportsEvaluateForHovers": true, "supportsExceptionInfoRequest": true, "supportsExceptionOptions": true, "supportsFunctionBreakpoints": true, "supportsHitConditionalBreakpoints": true, "supportsLogPoints": true, "supportsModulesRequest": true, "supportsSetExpression": true, "supportsSetVariable": true, "supportsValueFormattingOptions": true, "supportsTerminateDebuggee": true, "supportsGotoTargetsRequest": true, "supportsClipboardContext": true, "exceptionBreakpointFilters": [ { "filter": "raised", "label": "Raised Exceptions", "default": false, "description": "Break whenever any exception is raised." }, { "filter": "uncaught", "label": "Uncaught Exceptions", "default": true, "description": "Break when the process is exiting due to unhandled exception." }, { "filter": "userUnhandled", "label": "User Uncaught Exceptions", "default": false, "description": "Break when exception escapes into library code." } ], "supportsStepInTargetsRequest": true } -------------------------------------------------------------------------------- Line Breakpoints: -------------------------------------------------------------------------------- { "C:\\Users\\vivek\\Documents\\samples\\letterboxd_ten.py": [], "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\dbg.py": [], "C:\\Users\\vivek\\vimfiles\\ide.vim": [], "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py": [] } -------------------------------------------------------------------------------- Func Breakpoints: -------------------------------------------------------------------------------- [] -------------------------------------------------------------------------------- Ex Breakpoints: -------------------------------------------------------------------------------- { "filters": [ "uncaught" ], "exceptionOptions": [] } --------------------------------------------------------------------------------
2022-09-19 20:56:54,273 - INFO - **** INITIALISING NEW VIMSPECTOR SESSION **** 2022-09-19 20:56:54,274 - INFO - API is: 2022-09-19 20:56:54,274 - INFO - VIMSPECTOR_HOME = C:\Users\vivek\vimfiles\plugged\vimspector\python3\vimspector\..\.. 2022-09-19 20:56:54,404 - INFO - gadgetDir = C:\Users\vivek\vimfiles\plugged\vimspector\gadgets\windows 2022-09-19 20:56:54,405 - INFO - User requested start debug session with {} 2022-09-19 20:56:54,408 - DEBUG - Reading configurations from: None 2022-09-19 20:56:54,409 - DEBUG - Reading configurations from: C:\Users\vivek\vimfiles\plugged\vimspector\support\test\python\simple_python\.vimspector.json 2022-09-19 20:56:54,773 - DEBUG - Reading gadget config: C:\Users\vivek\vimfiles\plugged\vimspector\gadgets\windows\.gadgets.json 2022-09-19 20:56:54,776 - DEBUG - Reading gadget config: None 2022-09-19 20:56:56,479 - INFO - Configuration: {"adapter": "debugpy", "configuration": {"request": "launch", "type": "python", "cwd": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python", "program": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py", "stopOnEntry": false, "console": "integratedTerminal", "justMyCode": false, "purpose": ["debug-in-terminal"]}, "breakpoints": {"exception": {"raised": "N", "uncaught": "", "userUnhandled": ""}}} 2022-09-19 20:56:56,479 - INFO - Adapter: {"command": ["C:\\Program Files\\Python310\\python.exe", "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\gadgets\\windows/debugpy/build/lib/debugpy/adapter"], "configuration": {"python": "C:\\Program Files\\Python310\\python.exe", "subProcess": false}, "name": "debugpy"} 2022-09-19 20:56:56,857 - DEBUG - min_width/height: 149/50, actual: 172/38 - result: horizontal 2022-09-19 20:56:57,408 - DEBUG - LAUNCH! 2022-09-19 20:56:57,417 - INFO - Starting debug adapter with: {"command": ["C:\\Program Files\\Python310\\python.exe", "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\gadgets\\windows/debugpy/build/lib/debugpy/adapter"], "configuration": {"python": "C:\\Program Files\\Python310\\python.exe", "subProcess": false}, "name": "debugpy"} 2022-09-19 20:56:57,417 - DEBUG - Connection Type: job 2022-09-19 20:56:57,546 - INFO - Debug Adapter Started 2022-09-19 20:56:57,547 - DEBUG - Sending Message: {"command": "initialize", "arguments": {"adapterID": "debugpy", "clientID": "vimspector", "clientName": "vimspector", "linesStartAt1": true, "columnsStartAt1": true, "locale": "en_GB", "pathFormat": "path", "supportsVariableType": true, "supportsVariablePaging": false, "supportsRunInTerminalRequest": true, "supportsMemoryReferences": true}, "seq": 0, "type": "request"} 2022-09-19 20:56:58,243 - DEBUG - Message received: {'seq': 1, 'type': 'event', 'event': 'output', 'body': {'category': 'telemetry', 'output': 'ptvsd', 'data': {'packageVersion': '1.6.3'}}} 2022-09-19 20:56:58,244 - DEBUG - Message received: {'seq': 2, 'type': 'event', 'event': 'output', 'body': {'category': 'telemetry', 'output': 'debugpy', 'data': {'packageVersion': '1.6.3'}}} 2022-09-19 20:56:58,244 - DEBUG - Message received: {'seq': 3, 'type': 'response', 'request_seq': 0, 'success': True, 'command': 'initialize', 'body': {'supportsCompletionsRequest': True, 'supportsConditionalBreakpoints': True, 'supportsConfigurationDoneRequest': True, 'supportsDebuggerProperties': True, 'supportsDelayedStackTraceLoading': True, 'supportsEvaluateForHovers': True, 'supportsExceptionInfoRequest': True, 'supportsExceptionOptions': True, 'supportsFunctionBreakpoints': True, 'supportsHitConditionalBreakpoints': True, 'supportsLogPoints': True, 'supportsModulesRequest': True, 'supportsSetExpression': True, 'supportsSetVariable': True, 'supportsValueFormattingOptions': True, 'supportsTerminateDebuggee': True, 'supportsGotoTargetsRequest': True, 'supportsClipboardContext': True, 'exceptionBreakpointFilters': [{'filter': 'raised', 'label': 'Raised Exceptions', 'default': False, 'description': 'Break whenever any exception is raised.'}, {'filter': 'uncaught', 'label': 'Uncaught Exceptions', 'default': True, 'description': 'Break when the process is exiting due to unhandled exception.'}, {'filter': 'userUnhandled', 'label': 'User Uncaught Exceptions', 'default': False, 'description': 'Break when exception escapes into library code.'}], 'supportsStepInTargetsRequest': True}} 2022-09-19 20:56:58,246 - DEBUG - Sending Message: {"command": "launch", "arguments": {"python": "C:\\Program Files\\Python310\\python.exe", "subProcess": false, "request": "launch", "type": "python", "cwd": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python", "program": "C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py", "stopOnEntry": false, "console": "integratedTerminal", "justMyCode": false, "purpose": ["debug-in-terminal"], "name": "test"}, "seq": 1, "type": "request"} 2022-09-19 20:56:58,257 - DEBUG - Message received: {'seq': 4, 'type': 'request', 'command': 'runInTerminal', 'arguments': {'kind': 'integrated', 'title': 'Python Debug Console', 'args': ['C:\\Program Files\\Python310\\python.exe', 'C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\gadgets\\windows\\debugpy\\build\\lib\\debugpy\\adapter/../..\\debugpy\\launcher', '2607', '--', 'C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py'], 'env': {}, 'cwd': 'C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python'}} 2022-09-19 20:56:58,622 - DEBUG - Sending Message: {"seq": 2, "type": "response", "request_seq": 4, "command": "runInTerminal", "body": {"processId": 10532}, "success": true} 2022-09-19 20:57:01,291 - DEBUG - Message received: {'seq': 5, 'type': 'event', 'event': 'initialized'} 2022-09-19 20:57:01,291 - DEBUG - Sending Message: {"command": "setFunctionBreakpoints", "arguments": {"breakpoints": []}, "seq": 3, "type": "request"} 2022-09-19 20:57:01,292 - DEBUG - Sending Message: {"command": "setExceptionBreakpoints", "arguments": {"filters": ["uncaught"], "exceptionOptions": []}, "seq": 4, "type": "request"} 2022-09-19 20:57:01,302 - DEBUG - Message received: {'seq': 6, 'type': 'response', 'request_seq': 3, 'success': True, 'command': 'setFunctionBreakpoints', 'body': {'breakpoints': []}} 2022-09-19 20:57:01,303 - DEBUG - Message received: {'seq': 7, 'type': 'response', 'request_seq': 4, 'success': True, 'command': 'setExceptionBreakpoints'} 2022-09-19 20:57:01,303 - DEBUG - Sending Message: {"command": "configurationDone", "seq": 5, "type": "request"} 2022-09-19 20:57:01,314 - DEBUG - Message received: {'seq': 8, 'type': 'response', 'request_seq': 5, 'success': True, 'command': 'configurationDone'} 2022-09-19 20:57:01,315 - DEBUG - Message received: {'seq': 9, 'type': 'response', 'request_seq': 1, 'success': True, 'command': 'launch'} 2022-09-19 20:57:01,316 - DEBUG - Sending Message: {"command": "threads", "seq": 6, "type": "request"} 2022-09-19 20:57:01,316 - DEBUG - Message received: {'seq': 10, 'type': 'event', 'event': 'process', 'body': {'startMethod': 'launch', 'isLocalProcess': True, 'systemProcessId': 10928, 'name': 'C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py', 'pointerSize': 64}} 2022-09-19 20:57:01,317 - INFO - User Msg: The debuggee was started: C:\Users\vivek\vimfiles\plugged\vimspector\support\test\python\simple_python\encode_error.py 2022-09-19 20:57:01,325 - DEBUG - Message received: {'seq': 11, 'type': 'event', 'event': 'thread', 'body': {'reason': 'started', 'threadId': 1}} 2022-09-19 20:57:01,327 - DEBUG - Message received: {'seq': 12, 'type': 'response', 'request_seq': 6, 'success': True, 'command': 'threads', 'body': {'threads': [{'id': 1, 'name': 'MainThread'}]}} 2022-09-19 20:57:01,328 - DEBUG - Sending Message: {"command": "threads", "seq": 7, "type": "request"} 2022-09-19 20:57:01,353 - DEBUG - Message received: {'seq': 13, 'type': 'response', 'request_seq': 7, 'success': True, 'command': 'threads', 'body': {'threads': [{'id': 1, 'name': 'MainThread'}]}} 2022-09-19 20:57:01,431 - DEBUG - Message received: {'seq': 14, 'type': 'event', 'event': 'stopped', 'body': {'reason': 'exception', 'description': 'exception: no description', 'threadId': 1, 'preserveFocusHint': False, 'text': 'Exception (note: full exception trace is shown but execution is paused at: _run_module_as_main)', 'allThreadsStopped': True}} 2022-09-19 20:57:01,431 - WARNING - User Msg: Paused in thread 1 due to exception: no description(exception): Exception (note: full exception trace is shown but execution is paused at: _run_module_as_main) 2022-09-19 20:57:01,559 - DEBUG - Sending Message: {"command": "threads", "seq": 8, "type": "request"} 2022-09-19 20:57:01,564 - DEBUG - Message received: {'seq': 15, 'type': 'response', 'request_seq': 8, 'success': True, 'command': 'threads', 'body': {'threads': [{'id': 1, 'name': 'MainThread'}]}} 2022-09-19 20:57:01,564 - DEBUG - Sending Message: {"command": "stackTrace", "arguments": {"threadId": 1}, "seq": 9, "type": "request"} 2022-09-19 20:57:01,588 - DEBUG - Message received: {'seq': 16, 'type': 'response', 'request_seq': 9, 'success': True, 'command': 'stackTrace', 'body': {'stackFrames': [{'id': 2, 'name': '<module>', 'line': 2, 'column': 1, 'source': {'path': 'C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py', 'sourceReference': 0}}, {'id': 3, 'name': '_run_code', 'line': 86, 'column': 1, 'source': {'path': 'C:\\Program Files\\Python310\\Lib\\runpy.py', 'sourceReference': 0}, 'presentationHint': 'subtle'}, {'id': 4, 'name': '_run_module_as_main (Current frame)', 'line': 196, 'column': 1, 'source': {'path': 'C:\\Program Files\\Python310\\Lib\\runpy.py', 'sourceReference': 0}, 'presentationHint': 'subtle'}], 'totalFrames': 3}} 2022-09-19 20:57:01,611 - DEBUG - Sending Message: {"command": "scopes", "arguments": {"frameId": 2}, "seq": 10, "type": "request"} 2022-09-19 20:57:01,614 - DEBUG - Message received: {'seq': 17, 'type': 'event', 'event': 'module', 'body': {'reason': 'new', 'module': {'id': 0, 'name': '__main__', 'path': 'C:\\Users\\vivek\\vimfiles\\plugged\\vimspector\\support\\test\\python\\simple_python\\encode_error.py'}}} 2022-09-19 20:57:01,614 - DEBUG - Message received: {'seq': 18, 'type': 'event', 'event': 'module', 'body': {'reason': 'new', 'module': {'id': 1, 'name': 'runpy', 'path': 'C:\\Program Files\\Python310\\Lib\\runpy.py'}}} 2022-09-19 20:57:01,673 - DEBUG - Message received: {'seq': 19, 'type': 'response', 'request_seq': 10, 'success': True, 'command': 'scopes', 'body': {'scopes': [{'name': 'Locals', 'variablesReference': 5, 'expensive': False, 'presentationHint': 'locals', 'source': {}}, {'name': 'Globals', 'variablesReference': 6, 'expensive': False, 'source': {}}]}} 2022-09-19 20:57:01,674 - DEBUG - Sending Message: {"command": "variables", "arguments": {"variablesReference": 5}, "seq": 11, "type": "request"} 2022-09-19 20:57:02,285 - DEBUG - Message received: {'seq': 21, 'type': 'event', 'event': 'output', 'body': {'output': 'pydevd warning: Computing repr of special variables () was slow (took 0.42s)\n', 'category': 'important', 'source': {}}}
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Sep 11 2022 22:03:01) MS-Windows 64-bit GUI version with OLE support Included patches: 1-447 Compiled by appveyor@APPVYR-WIN Huge version with GUI. Features included (+) or not (-): +acl +ex_extra +mzscheme/dyn -tcl +arabic +extra_search +netbeans_intg -termguicolors +autocmd -farsi +num64 +terminal +autochdir +file_in_path +ole -termresponse +autoservername +find_in_path +packages +textobjects +balloon_eval +float +path_extra +textprop -balloon_eval_term +folding +perl/dyn -tgetent +browse -footer +persistent_undo +timers ++builtin_terms +gettext/dyn +popupwin +title +byte_offset -hangul_input -postscript +toolbar +channel +iconv/dyn +printer +user_commands +cindent +insert_expand +profile +vartabs +clientserver +ipv6 +python/dyn +vertsplit +clipboard +job +python3/dyn +vim9script +cmdline_compl +jumplist +quickfix +viminfo +cmdline_hist +keymap +reltime +virtualedit +cmdline_info +lambda +rightleft +visual +comments +langmap +ruby/dyn +visualextra +conceal +libcall +scrollbind +vreplace +cryptv +linebreak +signs -vtp +cscope +lispindent +smartindent +wildignore +cursorbind +listcmds +sodium/dyn +wildmenu +cursorshape +localmap +sound +windows +dialog_con_gui +lua/dyn +spell +writebackup +diff +menu +startuptime -xfontset +digraphs +mksession +statusline -xim +directx +modify_fname -sun_workshop +xpm_w32 -dnd +mouse +syntax -xterm_save -ebcdic +mouseshape +tag_binary +emacs_tags +multi_byte_ime/dyn -tag_old_static +eval +multi_lang -tag_any_white system vimrc file: "$VIM\vimrc" user vimrc file: "$HOME\_vimrc" 2nd user vimrc file: "$HOME\vimfiles\vimrc" 3rd user vimrc file: "$VIM\_vimrc" user exrc file: "$HOME\_exrc" 2nd user exrc file: "$VIM\_exrc" system gvimrc file: "$VIM\gvimrc" user gvimrc file: "$HOME\_gvimrc" 2nd user gvimrc file: "$HOME\vimfiles\gvimrc" 3rd user gvimrc file: "$VIM\_gvimrc" defaults file: "$VIMRUNTIME\defaults.vim" system menu file: "$VIMRUNTIME\menu.vim" Compilation: cl -c /W3 /GF /nologo -I. -Iproto -DHAVE_PATHDEF -DWIN32 -DFEAT_CSCOPE -DFEAT_TERMINAL -DFEAT_SOUND -DFEAT_NETBEANS_INTG -DFEAT_JOB_CHANNEL -DFEAT_IPV6 -DFEAT_XPM_W32 -DHAVE_SODIUM -DDYNAMIC_SODIUM -DDYNAMIC_SODIUM_DLL=\"libsodium.dll\" /I "C:\libsodium\include"
OS: Windows 10 20H2
Thanks. This is covered by #96
Description
When launching vimspector or using the balloon eval feature, the character "ō" causes a UnicodeEncodeError in python.
Works in vim?
Reproducable in Vim
Works with clean config?
Yes
Sample project works?
Reproducable with sample project
Minimal Reproduction
Open a python file with the contents:
Launch vimspector using:
:call vimspector#LaunchWithSettings({ 'configuration': 'run' })
Expected Behaviour
Expected no error messages during startup / balloon eval.
Actual Behaviour
A vim error trace is produced with the following output
Additional information
No response
Installation Type
Plugin Manager (git clone)
Vimspector version
3378018bc1cdd1d9b70734c3e970bc52fd983415
Debug Info
Log file
Vim version
Python version
No response
Neovim diagnostics
No response
Operating System
OS: Windows 10 20H2
Declaration