Skip to content

SIGILL: illegal instruction on arm64 debian 11 for containerd 2.2.0 (github.com/tetratelabs/wazero/internal/platform.getisar0()) #12665

@Thlr

Description

@Thlr

Description

Containerd fails spectacularly with any operation

Steps to reproduce the issue

Run any command

Describe the results you received and expected

We immediatly get the following stacktrace instead of whatever we wanted to perform (even containerd --version fails)

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

goroutine 1 gp=0x40000021c0 m=0 mp=0x558b951cc0 [running, locked to thread]:
github.com/tetratelabs/wazero/internal/platform.getisar0()
	/go/src/github.com/containerd/containerd/vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.s:11 fp=0x400008adc0 sp=0x400008adc0 pc=0x5589b47310
github.com/tetratelabs/wazero/internal/platform.loadCpuFeatureFlags()
	/go/src/github.com/containerd/containerd/vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.go:43 +0x1c fp=0x400008ae00 sp=0x400008adc0 pc=0x5589b46bec
github.com/tetratelabs/wazero/internal/platform.init()
	/go/src/github.com/containerd/containerd/vendor/github.com/tetratelabs/wazero/internal/platform/cpuid_arm64.go:8 +0x1c fp=0x400008ae10 sp=0x400008ae00 pc=0x5589b46b2c
runtime.doInit1(0x558b8cf040)
	/usr/local/go/src/runtime/proc.go:7410 +0xd4 fp=0x400008af40 sp=0x400008ae10 pc=0x55892cd5d4
runtime.doInit(...)
	/usr/local/go/src/runtime/proc.go:7377
runtime.main()
	/usr/local/go/src/runtime/proc.go:254 +0x340 fp=0x400008afd0 sp=0x400008af40 pc=0x55892bd730
runtime.goexit({})
	/usr/local/go/src/runtime/asm_arm64.s:1223 +0x4 fp=0x400008afd0 sp=0x400008afd0 pc=0x55892fbda4

goroutine 2 gp=0x4000002c40 m=nil [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:435 +0xc8 fp=0x400007af90 sp=0x400007af70 pc=0x55892f3898
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:441
runtime.forcegchelper()
	/usr/local/go/src/runtime/proc.go:348 +0xb8 fp=0x400007afd0 sp=0x400007af90 pc=0x55892bd9c8
runtime.goexit({})
	/usr/local/go/src/runtime/asm_arm64.s:1223 +0x4 fp=0x400007afd0 sp=0x400007afd0 pc=0x55892fbda4
created by runtime.init.7 in goroutine 1
	/usr/local/go/src/runtime/proc.go:336 +0x24

goroutine 18 gp=0x4000102380 m=nil [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/usr/local/go/src/runtime/proc.go:435 +0xc8 fp=0x4000076760 sp=0x4000076740 pc=0x55892f3898
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:441
runtime.bgsweep(0x4000110000)
	/usr/local/go/src/runtime/mgcsweep.go:276 +0xa0 fp=0x40000767b0 sp=0x4000076760 pc=0x55892a5840
runtime.gcenable.gowrap1()
	/usr/local/go/src/runtime/mgc.go:204 +0x28 fp=0x40000767d0 sp=0x40000767b0 pc=0x55892996e8
runtime.goexit({})
	/usr/local/go/src/runtime/asm_arm64.s:1223 +0x4 fp=0x40000767d0 sp=0x40000767d0 pc=0x55892fbda4
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:204 +0x6c

goroutine 19 gp=0x4000102540 m=nil [GC scavenge wait]:
runtime.gopark(0x4000110000?, 0x558a67e308?, 0x1?, 0x0?, 0x4000102540?)
	/usr/local/go/src/runtime/proc.go:435 +0xc8 fp=0x4000076f60 sp=0x4000076f40 pc=0x55892f3898
runtime.goparkunlock(...)
	/usr/local/go/src/runtime/proc.go:441
runtime.(*scavengerState).park(0x558b950a80)
	/usr/local/go/src/runtime/mgcscavenge.go:425 +0x5c fp=0x4000076f90 sp=0x4000076f60 pc=0x55892a337c
runtime.bgscavenge(0x4000110000)
	/usr/local/go/src/runtime/mgcscavenge.go:653 +0x44 fp=0x4000076fb0 sp=0x4000076f90 pc=0x55892a3894
runtime.gcenable.gowrap2()
	/usr/local/go/src/runtime/mgc.go:205 +0x28 fp=0x4000076fd0 sp=0x4000076fb0 pc=0x5589299688
runtime.goexit({})
	/usr/local/go/src/runtime/asm_arm64.s:1223 +0x4 fp=0x4000076fd0 sp=0x4000076fd0 pc=0x55892fbda4
created by runtime.gcenable in goroutine 1
	/usr/local/go/src/runtime/mgc.go:205 +0xac

goroutine 34 gp=0x4000184380 m=nil [finalizer wait]:
runtime.gopark(0x18000001b8?, 0x7f40bdf3c8?, 0x78?, 0x4a?, 0x1c0?)
	/usr/local/go/src/runtime/proc.go:435 +0xc8 fp=0x400007a590 sp=0x400007a570 pc=0x55892f3898
runtime.runfinq()
	/usr/local/go/src/runtime/mfinal.go:196 +0x108 fp=0x400007a7d0 sp=0x400007a590 pc=0x5589298678
runtime.goexit({})
	/usr/local/go/src/runtime/asm_arm64.s:1223 +0x4 fp=0x400007a7d0 sp=0x400007a7d0 pc=0x55892fbda4
created by runtime.createfing in goroutine 1
	/usr/local/go/src/runtime/mfinal.go:166 +0x80

r0      0x5589b46b10
r1      0x1
r2      0x0
r3      0x0
r4      0x0
r5      0x2
r6      0x0
r7      0x7f41423668
r8      0x40001ba300
r9      0x0
r10     0xc
r11     0xd
r12     0x7e
r13     0x7974696c69626170
r14     0x80
r15     0xf6f60b290d450573
r16     0x400008a3a0
r17     0x400008ae90
r18     0x0
r19     0x558a3f36d3
r20     0x400008ae10
r21     0x5
r22     0x13
r23     0x3cb9d69707
r24     0x8e41dc0be9fcd734
r25     0xbe71521dac
r26     0x558b8cf048
r27     0x558b97b000
r28     0x40000021c0
r29     0x400008adb8
lr      0x5589b46bec
sp      0x400008adc0
pc      0x5589b47310
fault   0x0

What version of containerd are you using?

v2.2.0

Any other relevant information

containerd version: v2.2.0
linux kernel: 4.4.194
distribution: Debian 11

runc version

runc version 1.3.4
commit: v1.3.4-0-gd6d73eb8
spec: 1.2.1
go: go1.24.9
libseccomp: 2.5.1

Show configuration if it is related to CRI plugin.

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions