Skip to content

Panic in session token storage handler #3935

@roman-khimov

Description

@roman-khimov

Expected Behavior

No panic.

Current Behavior

Apr 10 14:07:47 metis3 neofs-node[1103]: panic: runtime error: index out of range [7] with length 0 [recovered, repanicked]
Apr 10 14:07:47 metis3 neofs-node[1103]: goroutine 688 [running]:
Apr 10 14:07:47 metis3 neofs-node[1103]: sync.(*WaitGroup).Go.func1.1()
Apr 10 14:07:47 metis3 neofs-node[1103]:         sync/waitgroup.go:251 +0x45
Apr 10 14:07:47 metis3 neofs-node[1103]: panic({0x133df00?, 0x257df4ff6678?})
Apr 10 14:07:47 metis3 neofs-node[1103]:         runtime/panic.go:860 +0x13a
Apr 10 14:07:47 metis3 neofs-node[1103]: encoding/binary.littleEndian.Uint64(...)
Apr 10 14:07:47 metis3 neofs-node[1103]:         encoding/binary/binary.go:116
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/util/state.epochFromToken(...)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/util/state/util.go:57
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/util/state.PersistentStorage.RemoveOldTokens.func1(0x257dbf9661a0?)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/util/state/token.go:93 +0x21f
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/bbolt.(*DB).Update(0x41b297?, 0x257dcedcb988)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/bbolt@v0.0.0-20250911202005-807225ebb0c8/db.go:899 +0x6f
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/util/state.PersistentStorage.RemoveOldTokens({0x257dbf9661a0?, 0x257dbfac8080?, {0x15217f0?, 0x257dbfa12300?}}, 0x99b6)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/util/state/token.go:87 +0x85
Apr 10 14:07:47 metis3 neofs-node[1103]: main.initSessionService.func1({0x150e800?, 0x257dd0d75620?})
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/cmd/neofs-node/session.go:25 +0x9b
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/morph/event.(*listener).parseAndHandleNotification(0x257dbfaa8a20, 0x257dc10464b0)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/morph/event/listener.go:318 +0x696
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/morph/event.(*listener).listenForNotifications(0x257dbfaa8a20, {0x1520c68, 0x257df503ae10}, 0x257df518c120, 0x257dbf95c310)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/morph/event/listener.go:262 +0x59
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/morph/event.(*listener).listen(0x257dbfaa8a20, {0x1520df0?, 0x257dbfc0e100?})
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/morph/event/listener.go:145 +0x1e5
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/morph/event.(*listener).ListenWithError.func1()
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/morph/event/listener.go:128 +0x28
Apr 10 14:07:47 metis3 neofs-node[1103]: sync.(*Once).doSlow(0xe?, 0x0?)
Apr 10 14:07:47 metis3 neofs-node[1103]:         sync/once.go:78 +0xac
Apr 10 14:07:47 metis3 neofs-node[1103]: sync.(*Once).Do(...)
Apr 10 14:07:47 metis3 neofs-node[1103]:         sync/once.go:69
Apr 10 14:07:47 metis3 neofs-node[1103]: github.com/nspcc-dev/neofs-node/pkg/morph/event.(*listener).ListenWithError(0x257dc118e340?, {0x1520df0?, 0x257dbfc0e100?}, 0x0?)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/pkg/morph/event/listener.go:127 +0x52
Apr 10 14:07:47 metis3 neofs-node[1103]: main.listenMorphNotifications.func1.1(0x13ff4f7?)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/cmd/neofs-node/morph.go:71 +0x2b
Apr 10 14:07:47 metis3 neofs-node[1103]: main.runAndLog(0x257dbfc0a488, {0x13f9e64, 0x12}, 0x0, 0x257dfa283f30)
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/cmd/neofs-node/main.go:156 +0x9e
Apr 10 14:07:47 metis3 neofs-node[1103]: main.listenMorphNotifications.func1({0x1520df0?, 0x257dbfc0e100?})
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/cmd/neofs-node/morph.go:70 +0x5f
Apr 10 14:07:47 metis3 neofs-node[1103]: main.(*workerFromFunc).Run(0x100257df29f87a0?, {0x1520df0?, 0x257dbfc0e100?})
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/cmd/neofs-node/worker.go:22 +0x26
Apr 10 14:07:47 metis3 neofs-node[1103]: main.startWorkers.func1()
Apr 10 14:07:47 metis3 neofs-node[1103]:         github.com/nspcc-dev/neofs-node/cmd/neofs-node/worker.go:28 +0x27
Apr 10 14:07:47 metis3 neofs-node[1103]: sync.(*WaitGroup).Go.func1()
Apr 10 14:07:47 metis3 neofs-node[1103]:         sync/waitgroup.go:258 +0x4a
Apr 10 14:07:47 metis3 neofs-node[1103]: created by sync.(*WaitGroup).Go in goroutine 1
Apr 10 14:07:47 metis3 neofs-node[1103]:         sync/waitgroup.go:238 +0x73
Apr 10 14:07:47 metis3 systemd[1]: neofs-storage.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 10 14:07:47 metis3 systemd[1]: neofs-storage.service: Failed with result 'exit-code'.
Apr 10 14:07:47 metis3 systemd[1]: neofs-storage.service: Consumed 36min 10.529s CPU time, 28.7G memory peak.
Apr 10 14:07:52 metis3 systemd[1]: neofs-storage.service: Scheduled restart job, restart counter is at 1.
Apr 10 14:07:52 metis3 systemd[1]: Started neofs-storage.service - NeoFS Storage node.

Possible Solution

Fix something.

Steps to Reproduce (for bugs)

Unknown.

Context

mainnet.

Regression

Yes, 0.51.1 didn't have it.

Your Environment

  • Version used: 0.52.0
  • Server setup and configuration: mainnet
  • Operating System and version (uname -a): Debian stable

Metadata

Metadata

Assignees

Labels

I4No visible changesS4RoutineU1Critically important to resolve quicklybugSomething isn't workingneofs-storageStorage node application issues

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions