cloudflare / stpyv8

Python 3 and JavaScript interoperability. Successor To PyV8 (https://github.com/flier/pyv8)
Apache License 2.0
430 stars 39 forks source link

Threading issues when using tools like PyCharm/PyDev #80

Open devm18426 opened 1 year ago

devm18426 commented 1 year ago

Steps to reproduce issue:

This will result in a crash.

On Linux (using the latest release): Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) On Windows (using one of my builds): Process finished with exit code -1073741819 (0xC0000005)

Setting the PYTHONFAULTHANDLER environment variable ahead of time results in the following dumps:

Linux
Fatal Python error: Segmentation fault

Current thread 0x00007f4e1b63f700 (most recent call first):
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_bundle/_pydev_imports_tipper.py", line 218 in generate_imports_tip_for_module
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_bundle/_pydev_completer.py", line 151 in attr_matches
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_bundle/_pydev_completer.py", line 89 in complete
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py", line 274 in do_get_completions
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_bundle/pydev_console_utils.py", line 281 in getCompletions
  File "/snap/pycharm-professional/346/plugins/python/helpers/third_party/thriftpy/_shaded_thriftpy/thrift.py", line 287 in call
  File "/snap/pycharm-professional/346/plugins/python/helpers/third_party/thriftpy/_shaded_thriftpy/thrift.py", line 321 in process
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_comm/pydev_server.py", line 34 in handle
  File "/usr/lib/python3.8/threading.py", line 870 in run
  File "/usr/lib/python3.8/threading.py", line 932 in _bootstrap_inner
  File "/usr/lib/python3.8/threading.py", line 890 in _bootstrap

Thread 0x00007f4e1be40700 (most recent call first):
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_comm/pydev_io.py", line 110 in readall
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_comm/pydev_transport.py", line 45 in _read_frame
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_comm/pydev_transport.py", line 37 in _read_and_dispatch_next_frame
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/_pydev_comm/pydev_transport.py", line 64 in _read_forever
  File "/usr/lib/python3.8/threading.py", line 870 in run
  File "/usr/lib/python3.8/threading.py", line 932 in _bootstrap_inner
  File "/usr/lib/python3.8/threading.py", line 890 in _bootstrap

Thread 0x00007f4e1d8ea740 (most recent call first):
  File "/usr/lib/python3.8/threading.py", line 306 in wait
  File "/usr/lib/python3.8/queue.py", line 179 in get
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/pydevconsole.py", line 278 in process_exec_queue
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/pydevconsole.py", line 498 in start_client
  File "/snap/pycharm-professional/346/plugins/python/helpers/pydev/pydevconsole.py", line 570 in 

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
Windows
Windows fatal exception: access violation
Current thread 0x00004500 (most recent call first):
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_resolver.py", line 178 in _getPyDictionary
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_resolver.py", line 86 in get_dictionary
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_vars.py", line 265 in _resolve_default_variable_fields
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_vars.py", line 373 in resolve_compound_var_object_fields
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_bundle\pydev_console_utils.py", line 200 in getVariable
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\third_party\thriftpy\_shaded_thriftpy\thrift.py", line 287 in call
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\third_party\thriftpy\_shaded_thriftpy\thrift.py", line 321 in process
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_comm\pydev_server.py", line 34 in handle
  File "c:\python311\Lib\threading.py", line 975 in run
  File "c:\python311\Lib\threading.py", line 1038 in _bootstrap_inner
  File "c:\python311\Lib\threading.py", line 995 in _bootstrap
Thread 0x0000adb0 (most recent call first):
  File "c:\python311\Lib\threading.py", line 320 in wait
  File "c:\python311\Lib\threading.py", line 622 in wait
  File "...\Lib\site-packages\IPython\core\history.py", line 884 in run
  File "...\Lib\site-packages\IPython\core\history.py", line 60 in only_when_enabled
  File "...\Lib\site-packages\decorator.py", line 232 in fun
  File "c:\python311\Lib\threading.py", line 1038 in _bootstrap_inner
  File "c:\python311\Lib\threading.py", line 995 in _bootstrap
Thread 0x00009658 (most recent call first):
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_comm\pydev_io.py", line 110 in readall
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_comm\pydev_transport.py", line 45 in _read_frame
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_comm\pydev_transport.py", line 37 in _read_and_dispatch_next_frame
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\_pydev_comm\pydev_transport.py", line 64 in _read_forever
  File "c:\python311\Lib\threading.py", line 975 in run
  File "c:\python311\Lib\threading.py", line 1038 in _bootstrap_inner
  File "c:\python311\Lib\threading.py", line 995 in _bootstrap
Thread 0x0000ebc4 (most recent call first):
  File "c:\python311\Lib\threading.py", line 324 in wait
  File "c:\python311\Lib\queue.py", line 180 in get
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\pydevconsole.py", line 278 in process_exec_queue
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\pydevconsole.py", line 496 in start_client
  File "C:\Program Files (x86)\JetBrains\PyCharm 2020.2.3\plugins\python\helpers\pydev\pydevconsole.py", line 568 in 
Process finished with exit code -1073741819 (0xC0000005)

I've concluded this issue has to do with multithreading since running dir on the object directly in the interpreter works fine. PyCharm/PyDev runs dir on a separate thread which fails.

Autocomplete in IPython that's run in a regular terminal (not through PyCharm) work fine. In this case the autocomplete (using dir as well) is generated in the same thread.