spesmilo / spesmilo/electrum

RecursionError: maximum recursion depth exceeded in comparison

Open
#4,670 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug 🐞
Dominant language
Python
Stars
8.6k
Forks
3.5k
Avg merge
2d 8h
Merged PRs (30d)
61

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the traceback path from electrum/gui/qt/main_window.py through history_list.py to address_synchronizer.py, especially get_local_height and the surrounding balance and history calls. Reproduce the reported RecursionError if possible, determine which call cycle causes it, and verify that the history view no longer crashes while updating the affected wallet.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.