Tor stops responding to control port
- Android version: 9
- Phone model: Motorola Moto E6 Play
- Briar version: 1.4.8 (4623d03c)
While smoke testing the 1.4.8 release I was quickly toggling the Tor settings (enabling/disabling Tor, enabling/disabling bridges, enabling/disabling Tor on battery) when Briar stopped responding to changes in the Tor settings.
After this happened, each time I changed the settings the Tor plugin still logged "Tor settings updated", indicating that the new settings had been written to the DB and detected by the plugin. But the usual log messages that would follow from updateConnectionStatus() didn't appear.
When I signed out, the plugin logged "Stopping Tor" but then the stop() method didn't return. Eventually I had to force-stop the app.
I spent a long time trying to reproduce the bug, but wasn't able to.
At first I suspected the problem might be caused by the PoliteExecutor that runs the lambdas created by updateConnectionStatus(), but that executor isn't used when stopping Tor. The fact that the stop() method didn't return suggests that the problem is either in jtorctl or in Tor itself (I think a bug in jtorctl is more likely).
Log: moto-e6-tor-settings-updated.txt
Before the bug happened, the TorPlugin was logging some long queue times for tasks running on the PoliteExecutor, so in some cases the settings were being changed again before the previous changes had been applied to Tor. But this on its own isn't enough to reproduce the bug: adding a sleep to the end of the lambda created by updateConnectionStatus() caused long queue times but didn't trigger the bug.