Skip to content

x/sys/cpu: SIGILL on arm64 in readARM64Registers #57336

@bradfitz

Description

@bradfitz

On a Synology DS220J (Realtek RTD1296), an arm64 CPU, with x/sys@v0.1.0:

SIGILL: illegal instruction
PC=0x4e0d70 m=0 sigcode=1
instruction bytes: 0x0 0x6 0x38 0xd5 0xe0 0x7 0x0 0xf9 0xc0 0x3 0x5f 0xd6 0x0 0x0 0x0 0x0

goroutine 1 [running, locked to thread]:
golang.org/x/sys/cpu.getisar0()
	golang.org/x/sys@v0.1.0/cpu/cpu_arm64.s:14 fp=0x4000093510 sp=0x4000093510 pc=0x4e0d70
golang.org/x/sys/cpu.readARM64Registers()
	golang.org/x/sys@v0.1.0/cpu/cpu_arm64.go:65 +0x2c fp=0x4000093550 sp=0x4000093510 pc=0x4e05fc
golang.org/x/sys/cpu.doinit()
	golang.org/x/sys@v0.1.0/cpu/cpu_linux_arm64.go:38 +0x24 fp=0x4000093560 sp=0x4000093550 pc=0x4e08e4
golang.org/x/sys/cpu.archInit(...)
	golang.org/x/sys@v0.1.0/cpu/cpu_arm64.go:48
golang.org/x/sys/cpu.init.0()
	golang.org/x/sys@v0.1.0/cpu/cpu.go:199 +0x20 fp=0x4000093570 sp=0x4000093560 pc=0x4dfc80
runtime.doInit(0xfe7740)
	runtime/proc.go:6321 +0x128 fp=0x40000936b0 sp=0x4000093570 pc=0x56c38
runtime.doInit(0xfe9980)
	runtime/proc.go:6298 +0x68 fp=0x40000937f0 sp=0x40000936b0 pc=0x56b78
runtime.doInit(0xfee380)
	runtime/proc.go:6298 +0x68 fp=0x4000093930 sp=0x40000937f0 pc=0x56b78
runtime.doInit(0xff4da0)
	runtime/proc.go:6298 +0x68 fp=0x4000093a70 sp=0x4000093930 pc=0x56b78
runtime.doInit(0xff50a0)
	runtime/proc.go:6298 +0x68 fp=0x4000093bb0 sp=0x4000093a70 pc=0x56b78
runtime.doInit(0xffa960)
	runtime/proc.go:6298 +0x68 fp=0x4000093cf0 sp=0x4000093bb0 pc=0x56b78
runtime.doInit(0xff58a0)
	runtime/proc.go:6298 +0x68 fp=0x4000093e30 sp=0x4000093cf0 pc=0x56b78
runtime.doInit(0xff7080)
	runtime/proc.go:6298 +0x68 fp=0x4000093f70 sp=0x4000093e30 pc=0x56b78
runtime.main()
	runtime/proc.go:233 +0x1f8 fp=0x4000093fd0 sp=0x4000093f70 pc=0x48bb8
runtime.goexit()
	runtime/asm_arm64.s:1172 +0x4 fp=0x4000093fd0 sp=0x4000093fd0 pc=0x7a824

(originally reported in tailscale/tailscale#5793)

Although that's for x/sys v0.1, there have been no cpu changes since:

$ git diff -r v0.1.0..v0.3.0 cpu
$

@tklauser, looks like you touched that code last in 85b82a3

/cc @golang/runtime

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.arch-arm64

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions