Skip to content

cmd/compile,runtime: nosplit stack over 800 byte limit on freebsd/riscv64 #76062

@mengzhuo

Description

@mengzhuo

Go version

go version go1.26-devel_d7a52f9 Sun Oct 26 18:35:09 2025 -0700 freebsd/riscv64

Output of go env in your module/workspace:

AR='ar'
CC='clang'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_ENABLED='1'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
CXX='clang++'
GCCGO='gccgo'
GO111MODULE=''
GOARCH='riscv64'
GOAUTH='netrc'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOCACHEPROG=''
GODEBUG=''
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFIPS140='off'
GOFLAGS=''
GOGCCFLAGS='-fPIC -pthread -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1100105524=/tmp/go-build -gno-record-gcc-switches'
GOHOSTARCH='riscv64'
GOHOSTOS='freebsd'
GOINSECURE=''
GOMOD='/root/godev/src/go.mod'
GOMODCACHE='/root/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='freebsd'
GOPATH='/root/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GORISCV64='rva20u64'
GOROOT='/root/godev'
GOSUMDB='sum.golang.org'
GOTELEMETRY='local'
GOTELEMETRYDIR='/root/.config/go/telemetry'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/root/godev/pkg/tool/freebsd_riscv64'
GOVCS=''
GOVERSION='go1.26-devel_d7a52f9 Sun Oct 26 18:35:09 2025 -0700'
GOWORK=''
PKG_CONFIG='pkg-config'

What did you do?

run ./all.bash for test.

What did you see happen?

Building packages and commands for freebsd/riscv64.

##### Test execution environment.
# GOARCH: riscv64
# CPU:
# GOOS: freebsd
# OS Version: FreeBSD 15.0-STABLE FreeBSD 15.0-STABLE #39 stable/15-mzh-40d36e03b31c-dirty: Thu Oct 23 17:19:00 CST 2025     root@FreeBSD143:/usr/obj/usr/src/riscv.riscv/sys/GENERIC riscv

##### Testing packages.
# archive/tar.test
crosscall2_trampoline: nosplit stack over 800 byte limit
crosscall2_trampoline<138>
    grows 0 bytes, calls crosscall2<0>
        grows 232 bytes, calls runtime.cgocallback<0>
            grows 32 bytes, calls runtime.cgocallbackg<0>
                grows 32 bytes, calls runtime.cgocallbackg<1>
                    grows 96 bytes, calls runtime.exitsyscall<1>
                        grows 104 bytes, calls runtime.casgstatus<1>
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                48 bytes over limit
                    grows 96 bytes, calls runtime.reentersyscall<1>
                        grows 96 bytes, calls runtime.casgstatus<1>
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit
                            grows 112 bytes, calls runtime.nanotime1<1>
                                grows 16 bytes, calls runtime.vdsoClockGettime<1>
                                    grows 16 bytes, calls runtime.binuptime<1>
                                        grows 56 bytes, calls runtime.panicBounds<1>
                                            grows 152 bytes, calls runtime.panicBounds64<1>
                                                grows 0 bytes, calls runtime.morestack<0>
                                                40 bytes over limit

What did you expect to see?

all test passed

cc @golang/riscv64

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugReportIssues describing a possible bug in the Go implementation.NeedsFixThe path to resolution is known, but the work has not been done.OS-FreeBSDarch-riscvIssues solely affecting the riscv64 architecture.compiler/runtimeIssues related to the Go compiler and/or runtime.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions