pyOCD icon indicating copy to clipboard operation
pyOCD copied to clipboard

Faulthandler catches and backtraces python segfaults.

Open cederom opened this issue 3 years ago • 3 comments

This is really helpful to get an instant backtrack in case of python crash. Python crash may be caused by invalid system dependencies and many more. Such situation is really hard to debug. This solution gives hint at glance.

DOC: https://docs.python.org/dev/library/faulthandler.html

Signed-off-by: Tomasz 'CeDeROM' CEDRO [email protected]

cederom avatar Dec 18 '20 14:12 cederom

Here is an example faulthandler catch of libusb related python crash:

(venv37zephyr) pyocd --version
0.28.1.dev97+dirty

(venv37zephyr) pyocd help
usage: pyocd [-h] [-V] [--help-options]  ...
pyocd: error: argument : invalid choice: 'help' (choose from 'commander', 'cmd', 'erase', 'flash', 'reset', 'gdbserver', 'gdb', 'json', 'list', 'pack', 'server')

(venv37zephyr) pyocd list
Fatal Python error: Segmentation fault

Current thread 0x0000000800a3a000 (most recent call first):
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 611 in __init__
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 644 in __iter__
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/usb/core.py", line 1280 in device_iter
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/probe/pydapaccess/interface/pyusb_v2_backend.py", line 184 in get_all_connected_interfaces
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 68 in _get_interfaces
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/probe/pydapaccess/dap_access_cmsis_da
p.py", line 471 in get_connected_devices
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/probe/cmsis_dap_probe.py", line 73 in get_all_connected_probes
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/probe/aggregator.py", line 64 in get_all_connected_probes
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/core/helpers.py", line 82 in get_all_connected_probes
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/core/helpers.py", line 109 in list_co
nnected_probes
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/__main__.py", line 462 in do_list
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/__main__.py", line 402 in run
  File "/home/cd/usr/local/venv37zephyr/lib/python3.7/site-packages/pyocd-0.28.1.dev97+dirty-py3.7.egg/pyocd/__main__.py", line 931 in main
  File "/home/cd/usr/local/venv37zephyr/bin/pyocd", line 11 in <module>
Segmentation fault

cederom avatar Dec 18 '20 14:12 cederom

Hey @flit did/would you have a moment to see if that change impacts performance or anything else in a bad way? Except obvious advantages it would be nice to know the downsides :-)

cederom avatar Jan 12 '21 17:01 cederom

@cederom Apologies! I've fallen behind on pyocd after getting focused on DAPLink during the holiday, and now I'm trying to catch up after getting back to work.

flit avatar Jan 12 '21 18:01 flit