deps(evm): luxfi/vm v1.3.1 -> v1.3.3 — the C-Chain plugin never got the map-race fix

node v1.36.35 bumped luxfi/vm to v1.3.3 for a chain.State map race. The C-Chain
does not run in the luxd binary — it is a plugin built from THIS module, and
this module still pinned v1.3.1. So the fix shipped in the process that does not
verify blocks and was missing from the one that does. Read straight off the two
binaries in a v1.36.35 pod:

  /luxd/build/luxd                    github.com/luxfi/[email protected]
  /luxd/build/plugins/mgj786NP7…      github.com/luxfi/[email protected]

It fired in production on lux-testnet luxd-0 within 5 minutes of the roll:

  fatal error: concurrent map writes
  github.com/luxfi/vm/components/chain.(*BlockWrapper).Verify
      luxfi/[email protected]/components/chain/block.go:44
  github.com/luxfi/vm/rpc.(*zapVMServer).handleBlockVerify
      luxfi/[email protected]/rpc/vm_server_zap.go:580

v1.3.3 is exactly the fix for that line — it takes state.blocksLock around
verifiedBlocks[blkID] = bw, which v1.3.1 wrote unlocked from every concurrent
ZAP RPC handler.

Worth flagging separately: the plugin dies while luxd survives, so the pod stays
Ready with restarts=0 and info.isBootstrapped(C) keeps answering true while
eth_blockNumber on /v1/bc/C/rpc times out. The readiness probe cannot see this
failure class; only a per-node tip probe can. Recovery is a pod delete.

go build ./plugin/... ./core/... clean, go vet clean, plugin/evm tests pass.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-07-28 09:02:26 -07:00
co-authored by Hanzo Dev
parent 870abf6ad8
commit 910950602b
2 changed files with 4 additions and 1 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ require (
github.com/luxfi/utils v1.3.1
github.com/luxfi/validators v1.3.1
github.com/luxfi/version v1.0.1
github.com/luxfi/vm v1.3.1
github.com/luxfi/vm v1.3.3
github.com/luxfi/warp v1.24.1
github.com/mattn/go-colorable v0.1.15
github.com/mattn/go-isatty v0.0.22
+3
View File
@@ -428,6 +428,8 @@ github.com/luxfi/vm v1.2.6 h1:nJuy62YEBxfX2X65ujmqyeFaFoVj8A2ZQ4i4qpyD5dQ=
github.com/luxfi/vm v1.2.6/go.mod h1:TCCg4lDcQFCjxaxfXnxPIrpRSVAyyf2ucT4A4w654Hg=
github.com/luxfi/vm v1.3.1 h1:U2Bv7IDRFv8JtjUARfY53ZnOPRB2iPrPHSMDCQ+T0Js=
github.com/luxfi/vm v1.3.1/go.mod h1:6YR/uFV2FoofmogQShv+HM7V8alz5rbrQYjp5w0bNVA=
github.com/luxfi/vm v1.3.3 h1:BEBamD9VUcPG8mtL2Ga0Us1lTQ+ubaZqng/PZjNqzPc=
github.com/luxfi/vm v1.3.3/go.mod h1:v2XjW0yymxHwy1xPsSz338s0J8nRqOIb6RiDf0wUEgk=
github.com/luxfi/warp v1.23.0 h1:lVPnEG3pj3YjYK6VZaNLKsCPheEEQINMgSZobwG2xDo=
github.com/luxfi/warp v1.23.0/go.mod h1:4a6ZqXSsQVpm1nl1Q5i6SYPjDcdHvPyEoj4M9pvrIHE=
github.com/luxfi/warp v1.24.1 h1:9F+z6fy4sxmXp+3LlR9m3TiZ8Dfthh+s5KOeewSJL30=
@@ -740,6 +742,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI=
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=