spesmilo / electrum

Electrum Bitcoin Wallet
https://electrum.org
MIT License
7.42k stars 3.08k forks source link

RecursionError: maximum recursion depth exceeded in comparison #4670

Open TARS-bot opened 6 years ago

TARS-bot commented 6 years ago

Crash Report

This crash report was reported through the automatic crash reporting system 🤖

Traceback

  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641, in timer_actions
    self.update_wallet()
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757, in update_wallet
    self.update_tabs()
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 760, in update_tabs
    self.history_list.update()
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 521, in update
    self.on_update()
  File "/home/user/wspace/electrum/electrum/util.py", line 336, in <lambda>
    return lambda *args, **kw_args: do_profile(args, kw_args)
  File "/home/user/wspace/electrum/electrum/util.py", line 332, in do_profile
    o = func(*args, **kw_args)
  File "/home/user/wspace/electrum/electrum/gui/qt/history_list.py", line 219, in on_update
    r = self.wallet.get_full_history(domain=self.get_domain(), from_timestamp=self.start_timestamp, to_timestamp=self.end_timestamp, fx=fx)
  File "/home/user/wspace/electrum/electrum/util.py", line 336, in <lambda>
    return lambda *args, **kw_args: do_profile(args, kw_args)
  File "/home/user/wspace/electrum/electrum/util.py", line 332, in do_profile
    o = func(*args, **kw_args)
  File "/home/user/wspace/electrum/electrum/wallet.py", line 398, in get_full_history
    h = self.get_history(domain)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 470, in f
    return func(self, *args, **kwargs)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 501, in get_history
    c, u, x = self.get_balance(domain)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 782, in get_balance
    c, u, x = self.get_addr_balance(addr)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 470, in f
    return func(self, *args, **kwargs)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 740, in get_addr_balance
    received, sent = self.get_addr_io(address)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 698, in get_addr_io
    h = self.get_address_history(address)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 100, in get_address_history
    tx_height = self.get_tx_height(tx_hash).height
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 599, in get_tx_height
    conf = max(self.get_local_height() - info.height + 1, 0)
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 589, in get_local_height
    cached_local_height = getattr(self.threadlocal_cache, 'local_height', None)

RecursionError: maximum recursion depth exceeded in comparison

Reporter

This issue was reported by 1 user(s):

Electrum Version Python Version Operating System Wallet Type Locale Stack
3.2.2-138-g1bb1fc37f-dirty 3.6.3 (default, Oct 3 2017, 21:45:48) [GCC 7.2.0] Linux-4.13.0-46-generic-x86_64-with-Ubuntu-17.10-artful standard en_GB ℹ

Additional Information

The reporting user(s) did not provide additional information.

SomberNight commented 6 years ago

This happens while doing a full headers sync (with checkpoints manually removed) on testnet, with a moderately sized wallet open.

Soon after the exception, the whole app crashes:

Fatal Python error: Cannot recover from stack overflow.

Thread 0x00007fc61bfff700 (most recent call first):
  File "/usr/lib/python3.6/threading.py", line 295 in wait
  File "/usr/lib/python3.6/queue.py", line 164 in get
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 657 in run

Thread 0x00007fc5da64e700 (most recent call first):
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 55 in run

Thread 0x00007fc61a7fc700 (most recent call first):
  File "/usr/lib/python3.6/selectors.py", line 376 in select
  File "/usr/lib/python3.6/socketserver.py", line 295 in handle_request
  File "/home/user/wspace/electrum/electrum/daemon.py", line 292 in run
  File "/home/user/wspace/electrum/electrum/util.py", line 882 in run_with_except_hook
  File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
  File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap

Thread 0x00007fc61affd700 (most recent call first):
  File "/home/user/wspace/electrum/electrum/network.py", line 1058 in wait_on_sockets
  File "/home/user/wspace/electrum/electrum/network.py", line 1085 in run
  File "/home/user/wspace/electrum/electrum/util.py", line 882 in run_with_except_hook
  File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
  File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap

Thread 0x00007fc62a6c4700 (most recent call first):
  File "/home/user/wspace/electrum/electrum/plugin.py", line 179 in run
  File "/home/user/wspace/electrum/electrum/util.py", line 882 in run_with_except_hook
  File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
  File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap

Current thread 0x00007fc633550740 (most recent call first):
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 596 in get_tx_height
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 100 in get_address_history
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 698 in get_addr_io
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 740 in get_addr_balance
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 470 in f
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 782 in get_balance
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 501 in get_history
  File "/home/user/wspace/electrum/electrum/address_synchronizer.py", line 470 in f
  File "/home/user/wspace/electrum/electrum/wallet.py", line 398 in get_full_history
  File "/home/user/wspace/electrum/electrum/util.py", line 332 in do_profile
  File "/home/user/wspace/electrum/electrum/util.py", line 336 in <lambda>
  File "/home/user/wspace/electrum/electrum/gui/qt/history_list.py", line 219 in on_update
  File "/home/user/wspace/electrum/electrum/util.py", line 332 in do_profile
  File "/home/user/wspace/electrum/electrum/util.py", line 336 in <lambda>
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 521 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 760 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 764 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 762 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 762 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 762 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 761 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 761 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 760 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 760 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 760 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/exception_window.py", line 100 in send_report
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 760 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 761 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 762 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 764 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 764 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 764 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 763 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 764 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 764 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 762 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 762 in update_tabs
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 757 in update_wallet
  File "/home/user/wspace/electrum/electrum/gui/qt/main_window.py", line 641 in timer_actions
  File "/home/user/wspace/electrum/electrum/gui/qt/util.py", line 524 in update
  ...
Aborted (core dumped)
helpau commented 1 year ago

Probably related https://github.com/bitcoin/bitcoin/pull/25725

SomberNight commented 1 year ago

No, the "checkpoints" in bitcoin core are ~independent from the "checkpoints" in the electrum client. Ours are hardcoded in electrum/checkpoints.json.