mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-22 21:27:07 +00:00
count is used with atomic operations so it must be 64-bit aligned, otherwise atomic operations will panic. Having it at the top of the struct will guarantee that, even on 32-bit arches. This fixes panics like that one observed in kube-apiserver: E0310 13:48:47.476124 676 runtime.go:77] Observed a panic: unaligned 64-bit atomic operation goroutine 141 [running]: k8s.io/apimachinery/pkg/util/runtime.logPanic({0x2482378, 0x2db2ff8}) vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:75 +0x94 k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0x0, 0x0, 0x0}) vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:49 +0x78 panic({0x2482378, 0x2db2ff8}) /usr/local/go/src/runtime/panic.go:884 +0x218 runtime/internal/atomic.panicUnaligned() /usr/local/go/src/runtime/internal/atomic/unaligned.go:8 +0x24 runtime/internal/atomic.Load64(0x685f794) /usr/local/go/src/runtime/internal/atomic/atomic_arm.s:280 +0x14 k8s.io/client-go/tools/cache/synctrack.(*SingleFileTracker).HasSynced(0x685f790) vendor/k8s.io/client-go/tools/cache/synctrack/synctrack.go:115 +0x3c k8s.io/client-go/tools/cache.(*processorListener).HasSynced(0x6013e60) vendor/k8s.io/client-go/tools/cache/shared_informer.go:907 +0x20 k8s.io/client-go/tools/cache.WaitForCacheSync.func1() vendor/k8s.io/client-go/tools/cache/shared_informer.go:332 +0x50 k8s.io/apimachinery/pkg/util/wait.ConditionFunc.WithContext.func1({0x2dcf274, 0x607c600}) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:222 +0x1c k8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtectionWithContext({0x2dcf274, 0x607c600}, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:262 +0x64 k8s.io/apimachinery/pkg/util/wait.waitForWithContext({0x2dcf274, 0x607c600}, 0x64a6060, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:649 +0x11c k8s.io/apimachinery/pkg/util/wait.poll({0x2dcf274, 0x607c600}, 0x1, 0x64a6060, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:600 +0xc4 k8s.io/apimachinery/pkg/util/wait.PollImmediateUntilWithContext({0x2dcf274, 0x607c600}, 0x5f5e100, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:551 +0x60 k8s.io/apimachinery/pkg/util/wait.PollImmediateUntil(0x5f5e100, 0x6298020, 0x607c600) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:542 +0x48 k8s.io/client-go/tools/cache.WaitForCacheSync(0x607c600, {0x6298000, 0x3, 0x3}) vendor/k8s.io/client-go/tools/cache/shared_informer.go:329 +0x80 k8s.io/client-go/tools/cache.WaitForNamedCacheSync({0x283c5e1, 0xf}, 0x607c600, {0x6298000, 0x3, 0x3}) vendor/k8s.io/client-go/tools/cache/shared_informer.go:316 +0xe8 created by k8s.io/kubernetes/plugin/pkg/auth/authorizer/node.AddGraphEventHandlers plugin/pkg/auth/authorizer/node/graph_populator.go:65 +0x5b0 panic: unaligned 64-bit atomic operation [recovered] panic: unaligned 64-bit atomic operation goroutine 141 [running]: k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0x0, 0x0, 0x0}) vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:56 +0xf4 panic({0x2482378, 0x2db2ff8}) /usr/local/go/src/runtime/panic.go:884 +0x218 runtime/internal/atomic.panicUnaligned() /usr/local/go/src/runtime/internal/atomic/unaligned.go:8 +0x24 runtime/internal/atomic.Load64(0x685f794) /usr/local/go/src/runtime/internal/atomic/atomic_arm.s:280 +0x14 k8s.io/client-go/tools/cache/synctrack.(*SingleFileTracker).HasSynced(0x685f790) vendor/k8s.io/client-go/tools/cache/synctrack/synctrack.go:115 +0x3c k8s.io/client-go/tools/cache.(*processorListener).HasSynced(0x6013e60) vendor/k8s.io/client-go/tools/cache/shared_informer.go:907 +0x20 k8s.io/client-go/tools/cache.WaitForCacheSync.func1() vendor/k8s.io/client-go/tools/cache/shared_informer.go:332 +0x50 k8s.io/apimachinery/pkg/util/wait.ConditionFunc.WithContext.func1({0x2dcf274, 0x607c600}) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:222 +0x1c k8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtectionWithContext({0x2dcf274, 0x607c600}, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:262 +0x64 k8s.io/apimachinery/pkg/util/wait.waitForWithContext({0x2dcf274, 0x607c600}, 0x64a6060, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:649 +0x11c k8s.io/apimachinery/pkg/util/wait.poll({0x2dcf274, 0x607c600}, 0x1, 0x64a6060, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:600 +0xc4 k8s.io/apimachinery/pkg/util/wait.PollImmediateUntilWithContext({0x2dcf274, 0x607c600}, 0x5f5e100, 0x6382050) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:551 +0x60 k8s.io/apimachinery/pkg/util/wait.PollImmediateUntil(0x5f5e100, 0x6298020, 0x607c600) vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:542 +0x48 k8s.io/client-go/tools/cache.WaitForCacheSync(0x607c600, {0x6298000, 0x3, 0x3}) vendor/k8s.io/client-go/tools/cache/shared_informer.go:329 +0x80 k8s.io/client-go/tools/cache.WaitForNamedCacheSync({0x283c5e1, 0xf}, 0x607c600, {0x6298000, 0x3, 0x3}) vendor/k8s.io/client-go/tools/cache/shared_informer.go:316 +0xe8 created by k8s.io/kubernetes/plugin/pkg/auth/authorizer/node.AddGraphEventHandlers plugin/pkg/auth/authorizer/node/graph_populator.go:65 +0x5b0 Kubernetes-commit: ffcf653e0666366e6241c99d9418e830840afa0f |
||
---|---|---|
.. | ||
lazy_test.go | ||
lazy.go | ||
synctrack_test.go | ||
synctrack.go |