Skip to content

fatal error: bulkBarrierPreWrite: unaligned arguments (go 1.19.1, looks like regression) [1.19 backport] #55124

@gopherbot

Description

@gopherbot

@randall77 requested issue #55122 to be considered for backport to the next 1.19 minor release.

Reproducer:

package main

func main() {
	for i := 0; i < 10000; i++ {
		h(i)
		sink = make([]byte, 1024) // generate some garbage
	}
}

func h(iter int) {
	var x [32]byte
	for i := 0; i < 32; i++ {
		x[i] = 99
	}
	g(&x)
	if x == ([32]byte{}) {
		return
	}
	for i := 0; i < 32; i++ {
		println(x[i])
	}
	panic(iter)
}

//go:noinline
func g(x interface{}) {
	switch e := x.(type) {
	case *[32]byte:
		var c [32]byte
		*e = c
	case *[]byte:
		*e = nil
	}
}

var sink []byte

Fails on 1.19.1 and tip, doesn't fail for 1.19 and earlier.

@gopherbot please open a backport issue for 1.19.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions