Previously if there was a chain of exceptions, we were only
sending the traceback for the final exception.
E.g.
try:
raise ExcOne("asdasd")
except ExcOne() as e:
raise ExcTwo("qweqwe") from e
^ we would lose all info about ExcOne, including potentially many lines of trace
related: https://github.com/spesmilo/electrum/issues/7390
```
20210706T091826.513398Z | ERROR | __main__ | daemon.run_gui errored
Traceback (most recent call last):
File "run_electrum", line 407, in handle_cmd
File "electrum\daemon.py", line 584, in run_gui
File "electrum\gui\qt\__init__.py", line 414, in main
File "electrum\gui\qt\__init__.py", line 291, in wrapper
File "electrum\gui\qt\__init__.py", line 316, in start_new_window
File "electrum\gui\qt\__init__.py", line 361, in _start_wizard_to_select_or_create_wallet
File "electrum\wallet_db.py", line 73, in __init__
File "electrum\wallet_db.py", line 106, in load_data
File "electrum\util.py", line 412, in <lambda>
File "electrum\util.py", line 408, in do_profile
File "electrum\wallet_db.py", line 175, in upgrade
File "electrum\wallet_db.py", line 540, in _convert_version_24
ValueError: too many values to unpack (expected 2)
```
related #4905
related Electron-Cash/Electron-Cash@6a3d76b0ab
conceptually did not really make sense that the Exception_Hook kept a reference
to an ~arbitrary main window (preventing gc)