New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
lib/fs: Watching is unsupported on android/amd64 (fixes #8709) #8710
Conversation
Thanks, @calmh , I'll try it on the Android 13 emulator and report back. |
Sorry, it's in german. I've taken this screenshot from the Google Play Console of Syncthing-Fork. It shows that x86_64 corresponds to a minority of devices. Syncthing-Fork had another workaround in place which worked for Android <= 11 since 2020 and therefore has ~ 100 "Chromebook" x86_64 users who are happy with it. Reading though the syncthing-android issue tracker yesterday, I saw some of them already voiced the request for the official Syncthing app to support x86_64. All in all, I consider the risk of doing something wrong here with the combination "x86_64" and "android" build is low - and we benefit in both projects that Syncthing will run on x86_64 devices where it just crashed before without the user being able to interact with the wrapper and its settings screens. |
SyncthingNative build log: -- all fine. |
Thanks for your help on this, Jakob 💯 👍 🚀 |
@Catfriend1 Could you give your view on this - especially the usability of the app without filesystem notifications and making users aware of that:
|
@imsodin I'm not a big fan of the alternative because users might go to the web gui and try to enable file watching, ending in a crash with no possibility to start syncthing again and export/import config to recover. We would need a lot of code and xml handling in the wrapper to prevent the native running with default-enabled watches... code, even the fork doesn't have yet. Two years ago, the issue was reported to go/google trackers and the answer I've read always was "epollwait" won't come to amd64 android. The userbase of amd64-android is so small, in my opinion it's not worth to do much more coding work at the moment. Mainly Chromebook and emulator users (which is important to attract more people to help with the wrapper because they can use the emulator beyond Android 12). No one of these users was able to run the app (from my readings through issues) and it would be a good start, I think, to let them "in" even without the watcher functions. (Before we had file watching, Syncthing was already popular on Android :) Doesn't the native automatically fall back to rescan 1 m if setting up those watches failed? |
Thanks. That makes sense. I still think it would be good to have a warning on the app for those users, but that's obviously not a blocker to doing this fix to get it working at all.
As I wrote in the cited comment: It does, and that's what worries me, as it means a lot of fuse activity and thus likely high battery usage. |
Do we need to modify the android app first? |
I am fine with this PR. App changes for those few users affected would be nice but not a necessity in my opinion.
|
* upstream/main: lib/fs: Watching is unsupported on android/amd64 (fixes syncthing#8709) (syncthing#8710) lib/model: Only log at info level if setting change time fails (syncthing#8725) lib/model: Don't lower rescan interval from default on auto accepted enc folder (fixes syncthing#8572) (syncthing#8573) gui, man, authors: Update docs, translations, and contributors gui: Remove unmaintained language variant nl-BE (syncthing#8722) gui, script: Fix indentation in lang-en.json to match others (syncthing#8721) docker: Ensure entrypoint is executable (syncthing#8719) Go 1.19.4 Update dependencies (syncthing#8717) gui, man, authors: Update docs, translations, and contributors
* main: (69 commits) Handle relay connect timeout (fixes syncthing#8749) (syncthing#8755) gui, man, authors: Update docs, translations, and contributors build: Go 1.19.5 gui, man, authors: Update docs, translations, and contributors script: Add weblatedl.go for downloading updated translations (syncthing#8723) gui: Allow to translate action and type in Recent Changes modal (syncthing#8548) gui, man, authors: Update docs, translations, and contributors gui: Fix undefined lastSeenDays error in disconnected-inactive status check (ref syncthing#8530) (syncthing#8730) gui, man, authors: Update docs, translations, and contributors gui, api: Indicate running under container (syncthing#8728) lib/fs: Use io/fs errors as recommended in std lib (syncthing#8726) build: Handle co-authors (ref syncthing#3744) (syncthing#8708) lib/fs: Watching is unsupported on android/amd64 (fixes syncthing#8709) (syncthing#8710) lib/model: Only log at info level if setting change time fails (syncthing#8725) lib/model: Don't lower rescan interval from default on auto accepted enc folder (fixes syncthing#8572) (syncthing#8573) gui, man, authors: Update docs, translations, and contributors gui: Remove unmaintained language variant nl-BE (syncthing#8722) gui, script: Fix indentation in lang-en.json to match others (syncthing#8721) docker: Ensure entrypoint is executable (syncthing#8719) Go 1.19.4 ...
Apparently watching on android/amd64 causes a
SIGSYS: bad syscall
crash. This avoids that.