Previously an unhandled exception in the main script could cause the main thread to die
but the process to hang, as the event loop thread would keep running.
example:
$ ./run_electrum -o signmessage tb1qeh090ruc3cs5hry90tev4fsvrnegulw8xssdzx "mymsg" -w ~/.electrum/testnet/wallets/test_segwit_2
Traceback (most recent call last):
File "./run_electrum", line 424, in <module>
init_cmdline(config_options, wallet_path, False)
File "./run_electrum", line 146, in init_cmdline
db = WalletDB(storage.read(), manual_upgrades=False)
File "/home/user/wspace/electrum/electrum/wallet_db.py", line 72, in __init__
self.load_data(raw)
File "/home/user/wspace/electrum/electrum/wallet_db.py", line 103, in load_data
self._after_upgrade_tasks()
File "/home/user/wspace/electrum/electrum/wallet_db.py", line 189, in _after_upgrade_tasks
self._load_transactions()
File "/home/user/wspace/electrum/electrum/util.py", line 406, in <lambda>
return lambda *args, **kw_args: do_profile(args, kw_args)
File "/home/user/wspace/electrum/electrum/util.py", line 402, in do_profile
o = func(*args, **kw_args)
File "/home/user/wspace/electrum/electrum/wallet_db.py", line 1139, in _load_transactions
self.data = StoredDict(self.data, self, [])
File "/home/user/wspace/electrum/electrum/json_db.py", line 79, in __init__
self.__setitem__(k, v)
File "/home/user/wspace/electrum/electrum/json_db.py", line 44, in wrapper
return func(self, *args, **kwargs)
File "/home/user/wspace/electrum/electrum/json_db.py", line 105, in __setitem__
v = self.db._convert_dict(self.path, key, v)
File "/home/user/wspace/electrum/electrum/wallet_db.py", line 1182, in _convert_dict
v = dict((k, Invoice.from_json(x)) for k, x in v.items())
File "/home/user/wspace/electrum/electrum/wallet_db.py", line 1182, in <genexpr>
v = dict((k, Invoice.from_json(x)) for k, x in v.items())
File "/home/user/wspace/electrum/electrum/invoices.py", line 110, in from_json
return OnchainInvoice(**x)
File "<attrs generated init electrum.invoices.OnchainInvoice>", line 8, in __init__
File "/home/user/wspace/electrum/electrum/invoices.py", line 68, in _decode_outputs
output = PartialTxOutput.from_legacy_tuple(*output)
File "/home/user/wspace/electrum/electrum/transaction.py", line 131, in from_legacy_tuple
return cls.from_address_and_value(addr, val)
File "/home/user/wspace/electrum/electrum/transaction.py", line 104, in from_address_and_value
return cls(scriptpubkey=bfh(bitcoin.address_to_script(address)),
File "/home/user/wspace/electrum/electrum/bitcoin.py", line 422, in address_to_script
raise BitcoinException(f"invalid bitcoin address: {addr}")
electrum.util.BitcoinException: invalid bitcoin address: tb1qckp4ztmstwtyxzml3dmfvegeq5mfxwu2h3q94l
16 KiB
Executable File
16 KiB
Executable File