Skip to content

Arti is unable to reconstruct circuit after internet connection is restarted

Summary

Arti is unable to automatically reconstruct a circuit after internet connection is turned off and back on. For example, if WiFi is turned off and turned back on, Arti is unable to reconstruct a circuit until Arti is manually restarted. Arti gets stuck in a loop with the following messages:

WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: error: operation timed out at exit
Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Spent too long trying to construct circuits for this request

Steps to reproduce:

  1. Start Arti in proxy mode
  2. Turn internet connection off and back on
  3. Arti gets stuck in a loop trying to reconstruct a circuit until arti is manually restarted

What is the current bug behavior?

Arti gets stuck in a loop trying to reconstruct a circuit if internet connection is restarted.

What is the expected behavior?

Environment

  • Version: arti-v1.4.0-59-gab9150ae8
  • Operating system: Ubuntu Bionic
  • Install method: from git
  • etc...

Relevant logs and/or screenshots:

Feb 22 03:10:34 droid arti[15781]: Attempt 1: Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Feb 22 03:10:34 droid arti[15781]: Attempt 2: Circuit we were waiting for failed to complete: Circuit took too long to build
Feb 22 03:10:34 droid arti[15781]: Attempt 3: Circuit we were waiting for failed to complete: Circuit took too long to build
Feb 22 03:10:34 droid arti[15781]: Attempt 4: Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Feb 22 03:10:34 droid arti[15781]: Attempt 5: Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Feb 22 03:10:34 droid arti[15781]: Attempt 6: Spent too long trying to construct circuits for this request
Feb 22 03:10:34 droid arti[15781]: #033[2m2025-02-22T02:10:34Z#033[0m #033[33m WARN#033[0m #033[2mtor_circmgr#033[0m#033[2m:#033[0m Failed to build preemptive circuit [scrubbed]: error: Tried to find or build a circuit 6 times, but all attempts failed
Feb 22 03:10:34 droid arti[15781]: Attempt 1: Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Feb 22 03:10:34 droid arti[15781]: Attempt 2: Circuit we were waiting for failed to complete: Circuit took too long to build
Feb 22 03:10:34 droid arti[15781]: Attempt 3: Circuit we were waiting for failed to complete: Circuit took too long to build
Feb 22 03:10:34 droid arti[15781]: Attempt 4: Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Feb 22 03:10:34 droid arti[15781]: Attempt 5: Unable to select a guard relay: No usable guards. Rejected 60/60 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
Feb 22 03:10:34 droid arti[15781]: Attempt 6: Spent too long trying to construct circuits for this request
Feb 22 03:10:45 droid arti[15781]: #033[2m2025-02-22T02:10:45Z#033[0m #033[33m WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: error: operation timed out at exit
Feb 22 03:10:45 droid arti[15781]: #033[2m2025-02-22T02:10:45Z#033[0m #033[33m WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: error: operation timed out at exit
Feb 22 03:10:50 droid arti[15781]: #033[2m2025-02-22T02:10:50Z#033[0m #033[32m INFO#033[0m #033[2mtor_guardmgr::guard#033[0m#033[2m:#033[0m We have found that guard [scrubbed] is usable.
Feb 22 03:10:53 droid arti[15781]: #033[2m2025-02-22T02:10:53Z#033[0m #033[33m WARN#033[0m #033[2mtor_circmgr::hspool#033[0m#033[2m:#033[0m Too many preemptive onion service circuits failed; waiting a while.
Feb 22 03:11:10 droid arti[15781]: #033[2m2025-02-22T02:11:10Z#033[0m #033[33m WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: error: operation timed out at exit
Feb 22 03:11:10 droid arti[15781]: #033[2m2025-02-22T02:11:10Z#033[0m #033[33m WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: error: operation timed out at exit
Feb 22 03:11:13 droid arti[15781]: #033[2m2025-02-22T02:11:13Z#033[0m #033[33m WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: error: operation timed out at exit
Feb 22 03:11:13 droid arti[15781]: #033[2m2025-02-22T02:11:13Z#033[0m #033[33m WARN#033[0m #033[2marti::socks#033[0m#033[2m:#033[0m connection exited with error: erro

Possible fixes:

Edited by syphyr