Skip to content

Commit

Permalink
core: make txPricedList.stales the first field for 64bit alignment (e…
Browse files Browse the repository at this point in the history
…thereum#23542)

This fixes crashes on 32bit builds.
  • Loading branch information
fjl authored and zzyalbert committed Nov 26, 2021
1 parent 97cab3a commit e587cee
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion core/tx_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -480,9 +480,14 @@ func (h *priceHeap) Pop() interface{} {
// better candidates for inclusion while in other cases (at the top of the baseFee peak)
// the floating heap is better. When baseFee is decreasing they behave similarly.
type txPricedList struct {
// Number of stale price points to (re-heap trigger).
// This field is accessed atomically, and must be the first field
// to ensure it has correct alignment for atomic.AddInt64.
// See https://golang.org/pkg/sync/atomic/#pkg-note-BUG.
stales int64

all *txLookup // Pointer to the map of all transactions
urgent, floating priceHeap // Heaps of prices of all the stored **remote** transactions
stales int64 // Number of stale price points to (re-heap trigger)
reheapMu sync.Mutex // Mutex asserts that only one routine is reheaping the list
}

Expand Down

0 comments on commit e587cee

Please sign in to comment.