-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Description
We've started getting bug reports that our application is broken on older ARM-based Synology devices. SyncThing is also hitting it in syncthing/syncthing#8325.
In #45964 it was decided to require Linux 2.6.32 at minimum because that seemed like a popular cut-off as seen in the wild (due to Synology DSM 6.2) as seen by data I'd earlier collected.
Then some Go patches landed to simplify things based on that new minimum:
- https://go-review.googlesource.com/c/go/+/346849 (6705191) for Go 1.18
- ... (something else? still digging) ....
*b8b9e83 for Go 1.20rc1
Because packages in the Synology Package Center don't update often (it's like quarters to a year, not days like in the iOS/Google app stores), people are just hitting this now.
As @sfanous says in syncthing/syncthing#8325 (comment):
Did some more digging, it seems accept4 for ARM was added in 2.6.36.
....
So it seems like maybe we should revert that 6705191 accept4->accept fallback if we truly want to say that 2.6.32 is our Linux minimum?
Oh, but I see at https://github.com/golang/go/wiki/MinimumRequirements that it says:
Kernel version 2.6.32 or later. [This depends on architecture though, we need to have specific builder for this.] Linux/ARMv5 requires much newer kernels, at least v3.1 (for __kuser_cmpxchg64).
... and sure enough, some of these older Synology boxes experiencing problems are ARMv5 (e.g. Linux ds212j 2.6.32.12 #25556 Thu Jul 1 14:25:48 CST 2021 armv5tel GNU/Linux synology_88f6281_212j
) so maybe accept4
would just be the first of many problems they'd hit. I suppose I could try to run the Go std tests on one of these old boxes, but it's a bespoke userspace so would require some machinery running elsewhere.
/cc @tklauser @ianlancetaylor @knyar (who dig much of this digging)