spesmilo / electrumx

Alternative implementation of spesmilo/electrum-server
MIT License
432 stars 343 forks source link

Crash with "AttributeError: 'NoneType' object has no attribute 'host'" #168

Closed freerko closed 2 years ago

freerko commented 2 years ago

Hi, I run ElectrumX on Ubuntu 20.04.4 with Python 3.8.10 and aiorpcX 0.22.1 with current electrumx master with IPv4, IPv6 and Tor connectivity. On one crash, I see SessionManager closing down servers, then connections drop and 5 minutes later I get a traceback with an AttributeError: 'NoneType' object has no attribute 'host'.

... Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:ElectrumX:[16050569] SSL xx.xx.xx.xx:xx, 674 total Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:ElectrumX:[16050570] SSL xx.xx.xx.xx:xx, 675 total Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:SessionManager:closing down server for wss://all_interfaces:50004 Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:SessionManager:closing down server for rpc://localhost:8000 Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:SessionManager:closing down server for ssl://all_interfaces:50002 Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:SessionManager:closing down server for tcp://all_interfaces:50001 Feb 24 13:27:24 hostname electrumx_server[228835]: INFO:ElectrumX:[16050571] SSL xx.xx.xx.xx:xx, 642 total Feb 24 13:27:25 hostname electrumx_server[228835]: INFO:ElectrumX:[16050572] SSL xx.xx.xx.xx:xx, 643 total ... Feb 24 13:27:25 hostname electrumx_server[228835]: INFO:ElectrumX:[16050663] SSL xx.xx.xx.xx:xx, 636 total Feb 24 13:27:25 hostname electrumx_server[228835]: INFO:ElectrumX:[16050664] SSL xx.xx.xx.xx:xx, 613 total Feb 24 13:27:25 hostname electrumx_server[228835]: INFO:ElectrumX:[16050665] SSL xx.xx.xx.xx:xx, 287 total Feb 24 13:27:26 hostname electrumx_server[228835]: INFO:ElectrumX:[16050666] SSL xx.xx.xx.xx:xx, 117 total Feb 24 13:27:26 hostname electrumx_server[228835]: INFO:Prefetcher:cancelled; prefetcher stopping Feb 24 13:27:26 hostname electrumx_server[228835]: INFO:BlockProcessor:flushing to DB for a clean shutdown... Feb 24 13:27:26 hostname electrumx_server[228835]: INFO:ElectrumX:[16050667] SSL xx.xx.xx.xx:xx, 6 total Feb 24 13:27:34 hostname electrumx_server[228835]: INFO:ElectrumX:[16050668] SSL xx.xx.xx.xx:xx, 1 total Feb 24 13:29:32 hostname electrumx_server[228835]: INFO:DB:flush #11,290 took 0.4s. Height 724,747 txs: 713,018,468 (+2,456) Feb 24 13:29:32 hostname electrumx_server[228835]: INFO:Controller:shutting down Feb 24 13:29:32 hostname electrumx_server[228835]: INFO:Controller:shutdown complete Feb 24 13:32:51 hostname electrumx_server[228835]: ERROR:electrumx:ElectrumX server terminated abnormally Feb 24 13:32:51 hostname electrumx_server[228835]: Traceback (most recent call last): Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/EGG-INFO/scripts/electrumx_server", line 35, in main Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/lib/python3.8/asyncio/runners.py", line 44, in run Feb 24 13:32:51 hostname electrumx_server[228835]: return loop.run_until_complete(main) Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete Feb 24 13:32:51 hostname electrumx_server[228835]: return future.result() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/lib/server_base.py", line 129, in run Feb 24 13:32:51 hostname electrumx_server[228835]: await server_task Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/lib/server_base.py", line 102, in serve Feb 24 13:32:51 hostname electrumx_server[228835]: await self.serve(shutdown_event) Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/server/controller.py", line 134, in serve Feb 24 13:32:51 hostname electrumx_server[228835]: await group.spawn(wait_for_catchup()) Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/aiorpcx/curio.py", line 297, in aexit Feb 24 13:32:51 hostname electrumx_server[228835]: await self.join() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/lib/util.py", line 370, in join Feb 24 13:32:51 hostname electrumx_server[228835]: task.result() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/server/session.py", line 642, in serve Feb 24 13:32:51 hostname electrumx_server[228835]: await group.spawn(self._manage_servers()) Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/aiorpcx/curio.py", line 297, in aexit Feb 24 13:32:51 hostname electrumx_server[228835]: await self.join() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/lib/util.py", line 370, in join Feb 24 13:32:51 hostname electrumx_server[228835]: task.result() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/server/peers.py", line 480, in discover_peers Feb 24 13:32:51 hostname electrumx_server[228835]: await group.spawn(self._import_peers()) Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/aiorpcx/curio.py", line 297, in aexit Feb 24 13:32:51 hostname electrumx_server[228835]: await self.join() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/lib/util.py", line 370, in join Feb 24 13:32:51 hostname electrumx_server[228835]: task.result() Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/server/peers.py", line 246, in _monitor_peer Feb 24 13:32:51 hostname electrumx_server[228835]: if await self._should_drop_peer(peer): Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/server/peers.py", line 289, in _should_drop_peer Feb 24 13:32:51 hostname electrumx_server[228835]: await self._verify_peer(session, peer) Feb 24 13:32:51 hostname electrumx_server[228835]: File "/usr/local/lib/python3.8/dist-packages/e_x-1.16.0-py3.8.egg/electrumx/server/peers.py", line 342, in _verify_peer Feb 24 13:32:51 hostname electrumx_server[228835]: if isinstance(address.host, (IPv4Address, IPv6Address)): Feb 24 13:32:51 hostname electrumx_server[228835]: AttributeError: 'NoneType' object has no attribute 'host' Feb 24 13:33:58 hostname systemd[1]: electrumx.service: Succeeded.

SomberNight commented 2 years ago

should be fixed in https://github.com/spesmilo/electrumx/commit/25339328a7468235071d152f728b214df10d4c56