https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126582
Bug ID: 126582
Summary: [SH] Go applications crash with "panic: unaligned
64-bit atomic operation"
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: go
Assignee: ian at airs dot com
Reporter: glaubitz at debian dot org
CC: olegendo at gcc dot gnu.org
Target Milestone: ---
Target: sh*-*-*
Just tried to build and run a simple Go application on my sh4 (SH-7786LCR)
system running Debian unstable.
While compiling the application with gccgo works, running the actual program
fails with a runtime backtrace:
glaubitz@tirpitz:/srv/glaubitz/gcc/build$ ./gcc/xgcc -v
Using built-in specs.
COLLECT_GCC=./gcc/xgcc
Target: sh4a-unknown-linux-gnu
Configured with: ../configure --disable-multilib --disable-werror
--enable-multiarch --enable-bootstrap
--enable-languages=c,c++,objc,obj-c++,algol68,fortran,go
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 17.0.0 20260705 (experimental) (GCC)
glaubitz@tirpitz:/srv/glaubitz/gcc/build$ cat ~/hello.go
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
glaubitz@tirpitz:/srv/glaubitz/gcc/build$ ./gcc/gccgo -B./gcc ~/hello.go -I
sh4a-unknown-linux-gnu/libgo -L sh4a-unknown-linux-gnu/libgo -L
sh4a-unknown-linux-gnu/libgo/.libs -o ~/hello
glaubitz@tirpitz:/srv/glaubitz/gcc/build$
LD_LIBRARY_PATH=$(pwd)/sh4a-unknown-linux-gnu/libgo/.libs ~/hello
panic: unaligned 64-bit atomic operation
fatal error: panic during malloc
runtime stack:
runtime.dopanic__m
../../../libgo/go/runtime/panic.go:1207
runtime.fatalthrow
../../../libgo/go/runtime/panic.go:1073
runtime.throw
../../../libgo/go/runtime/panic.go:1044
panic
../../../libgo/go/runtime/panic.go:651
runtime_1internal_1atomic.panicUnaligned
../../../libgo/go/runtime/internal/atomic/unaligned.go:13
runtime_1internal_1atomic.Load64
../../../libgo/go/runtime/internal/atomic/atomic.c:51
runtime.headTailIndex.load
../../../libgo/go/runtime/mspanset.go:326
runtime.spanSet.pop
../../../libgo/go/runtime/mspanset.go:145
runtime.mcentral.cacheSpan
../../../libgo/go/runtime/mcentral.go:109
runtime.mcache.refill
../../../libgo/go/runtime/mcache.go:154
runtime.mcache.nextFree
../../../libgo/go/runtime/malloc.go:896
runtime.mallocgc
../../../libgo/go/runtime/malloc.go:1109
runtime.newobject
../../../libgo/go/runtime/malloc.go:1292
runtime.allocg
../../../libgo/go/runtime/stubs.go:340
runtime.malg
../../../libgo/runtime/proc.c:799
runtime.mpreinit
../../../libgo/go/runtime/os_gccgo.go:21
runtime.mcommoninit
../../../libgo/go/runtime/proc.go:807
runtime.schedinit
../../../libgo/go/runtime/proc.go:685
main
../../../libgo/runtime/go-main.c:56
__libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
__libc_start_main_impl
./csu/libc-start.c:360
:0
glaubitz@tirpitz:/srv/glaubitz/gcc/build$