From 5629f2668c69149bf3d9d8e2a25bb32a2648606e Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Mon, 3 Aug 2026 21:03:32 +0100 Subject: [PATCH] overview: fix "internal error: no overview data found" on 32 bit architectures - fixes #9723 The precision field in the backend overview YAML files can hold fs.ModTimeNotSupported (100 years in nanoseconds) which overflows int on 32 bit platforms, making the YAML for those backends fail to parse and causing rclone to log 18 internal errors on every invocation. Use int64 for the precision field and add a test that parses every embedded backend YAML file so this is caught on 32 bit test runs. --- backend/overview/overview.go | 2 +- backend/overview/overview_test.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/overview/overview.go b/backend/overview/overview.go index 11af24fd3..ebf068e7b 100644 --- a/backend/overview/overview.go +++ b/backend/overview/overview.go @@ -26,7 +26,7 @@ type BackendConfig struct { Remote string `yaml:"remote"` Features []string `yaml:"features"` Hashes []string `yaml:"hashes"` - Precision int `yaml:"precision"` + Precision int64 `yaml:"precision"` } // GetBackendConfig from docs/data/backends diff --git a/backend/overview/overview_test.go b/backend/overview/overview_test.go index f7441bfb8..260a0ce72 100644 --- a/backend/overview/overview_test.go +++ b/backend/overview/overview_test.go @@ -1,8 +1,10 @@ package overview import ( + "strings" "testing" + "github.com/rclone/rclone/docs/data/backends" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -53,3 +55,17 @@ func TestGetBackendConfig(t *testing.T) { assert.Equal(t, expectedMemoryConfig, conf, "parsed memory.yaml should match") } + +// Check every embedded backend YAML file parses on all architectures +func TestGetBackendConfigAll(t *testing.T) { + entries, err := backends.BackendFS.ReadDir(".") + require.NoError(t, err) + require.NotEmpty(t, entries) + + for _, entry := range entries { + name := strings.TrimSuffix(entry.Name(), ".yaml") + conf, err := GetBackendConfig(name) + assert.NoError(t, err, "failed to load %s", entry.Name()) + assert.NotNil(t, conf) + } +}