Skip to content

runc seccomp test fails on s390x (numerical argument out of domain) #4835

@ricardobranco777

Description

@ricardobranco777

Description

runc seccomp test fails on s390x.

I currently don't have access to a s390x system with Tumbleweed to run this test.

Tracking in SUSE as https://bugzilla.suse.com/show_bug.cgi?id=1247567

Steps to reproduce the issue

### RUN AS root
curl -sL --retry 9 --retry-delay 100 --retry-max-time 900 https://github.com/bats-core/bats-core/archive/refs/tags/v1.11.1.tar.gz | tar -zxf -
bash bats-core-1.11.1/install.sh /usr/local
rm -rf bats-core-1.11.1
mkdir -pm 0750 /etc/sudoers.d/
echo 'Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin"' > /etc/sudoers.d/usrlocal
zypper --gpg-auto-import-keys -n install glibc-devel-static git-core go1.24 jq libseccomp-devel make runc
mkdir -p /etc/systemd/system/[email protected]/
echo -e "[Service]\nDelegate=cpu cpuset io memory pids" > /etc/systemd/system/[email protected]/60-delegate.conf
reboot
### RUN AS user
cd /var/tmp/
git clone https://github.com/opencontainers/runc.git
cd /var/tmp/runc
git checkout v1.2.6
curl -sL --retry 9 --retry-delay 100 --retry-max-time 900 -O make memfd-bind fs-idmap pidfd-kill recvtty remap-rootfs sd-helper seccompagent || true
### RUN AS root
cd /var/tmp/runc
mkdir -p /var/tmp/test.bhMPpb
env BATS_TMPDIR=/var/tmp/test.bhMPpb PATH=/usr/local/bin:$PATH:/usr/sbin:/sbin RUNC=/usr/bin/runc RUNC_USE_SYSTEMD=1 bats --tap -T tests/integration/seccomp.bats | tee -a runc-root.tap
sudo rm -rf /var/tmp/test.bhMPpb || true

Describe the results you received and expected

not ok 209 runc run [seccomp -ENOSYS handling] in 699ms
# (in test file tests/integration/seccomp.bats, line 22)
#   `[ "$status" -eq 0 ]' failed
# runc spec (status=0):
#
# runc run test_busybox (status=1):
# time="2025-08-04T21:13:25+02:00" level=warning msg="unable to get oom kill count" error="openat2 /sys/fs/cgroup/system.slice/runc-test_busybox.scope/memory.events: no such file or directory"
# time="2025-08-04T21:13:25+02:00" level=error msg="runc run failed: unable to start container process: error during container init: unable to init seccomp: error adding architecture to seccomp filter: numerical argument out of domain"
# --- teardown ---
not ok 210 runc run [seccomp defaultErrnoRet=ENXIO] in 561ms
# (in test file tests/integration/seccomp.bats, line 34)
#   `[ "$status" -eq 0 ]' failed
# runc spec (status=0):
#
# runc run test_busybox (status=1):
# time="2025-08-04T21:13:26+02:00" level=error msg="runc run failed: unable to start container process: error during container init: unable to init seccomp: error adding architecture to seccomp filter: numerical argument out of domain"
# --- teardown ---
not ok 211 runc run [seccomp] (SCMP_ACT_ERRNO default) in 549ms
# (in test file tests/integration/seccomp.bats, line 52)
#   `[[ "$output" == *"mkdir:"*"/dev/shm/foo"*"Operation not permitted"* ]]' failed
# runc spec (status=0):
#
# runc run test_busybox (status=1):
# time="2025-08-04T21:13:27+02:00" level=error msg="runc run failed: unable to start container process: error during container init: error adding architecture to seccomp filter: numerical argument out of domain"
# --- teardown ---
not ok 212 runc run [seccomp] (SCMP_ACT_ERRNO explicit errno) in 564ms
# (in test file tests/integration/seccomp.bats, line 66)
#   `[[ "$output" == *"Network is down"* ]]' failed
# runc spec (status=0):
#
# runc run test_busybox (status=1):
# time="2025-08-04T21:13:27+02:00" level=error msg="runc run failed: unable to start container process: error during container init: error adding architecture to seccomp filter: numerical argument out of domain"
# --- teardown ---
not ok 213 runc run [seccomp] (SECCOMP_FILTER_FLAG_*) in 705ms
# (in test file tests/integration/seccomp.bats, line 146)
#   `[[ "$output" == *"mkdir:"*"/dev/shm/foo"*"Operation not permitted"* ]]' failed
# runc spec (status=0):
#
# runc --debug run test_busybox (status=1):
# time="2025-08-04T21:13:28+02:00" level=debug msg="F_GET_SEALS on /proc/self/exe failed: invalid argument" func="libcontainer/dmz.IsCloned()" file="libcontainer/dmz/cloned_binary_linux.go:206"
# time="2025-08-04T21:13:28+02:00" level=debug msg="runc-dmz: using overlayfs for sealed /proc/self/exe" func="libcontainer/dmz.CloneSelfExe()" file="libcontainer/dmz/cloned_binary_linux.go:231"
# time="2025-08-04T21:13:28+02:00" level=debug msg="runc-dmz: using /proc/self/exe clone" func="libcontainer.(*Container).newParentProcess()" file="libcontainer/container_linux.go:507"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec[48660]: => nsexec container setup"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: ~> nsexec stage-0"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: spawn stage-1"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: -> stage-1 synchronisation loop"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-1[48663]: ~> nsexec stage-1"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-1[48663]: unshare remaining namespaces"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-1[48663]: spawn stage-2"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-2[1]: ~> nsexec stage-2"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-1[48663]: request stage-0 to forward stage-2 pid (48664)"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: stage-1 requested pid to be forwarded"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: forward stage-1 (48663) and stage-2 (48664) pids to runc"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-1[48663]: signal completion to stage-0"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-1[48663]: <~ nsexec stage-1"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: stage-1 complete"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: <- stage-1 synchronisation loop"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: -> stage-2 synchronisation loop"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: signalling stage-2 to run"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-2[1]: signal completion to stage-0"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-2[1]: <= nsexec container setup"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-2[1]: booting up go runtime ..."
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: stage-2 complete"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: <- stage-2 synchronisation loop"
# time="2025-08-04T21:13:28+02:00" level=debug msg="nsexec-0[48660]: <~ nsexec stage-0"
# time="2025-08-04T21:13:28+02:00" level=debug msg="mount source thread: successfully running in container mntns"
# time="2025-08-04T21:13:28+02:00" level=debug msg="reading sync" func="libcontainer.doReadSync()" file="libcontainer/sync.go:127"
# time="2025-08-04T21:13:28+02:00" level=debug msg="child process in init()"
# time="2025-08-04T21:13:28+02:00" level=debug msg="writing sync type:procHooks"
# time="2025-08-04T21:13:28+02:00" level=debug msg="reading sync"
# time="2025-08-04T21:13:28+02:00" level=debug msg="read sync type:procHooks" func="libcontainer.doReadSync()" file="libcontainer/sync.go:139"
# time="2025-08-04T21:13:28+02:00" level=debug msg="writing sync type:procHooksDone"
# time="2025-08-04T21:13:28+02:00" level=debug msg="reading sync"
# time="2025-08-04T21:13:28+02:00" level=debug msg="read sync type:procHooksDone" func="libcontainer/logs.processEntry()" file="libcontainer/logs/logs.go:55"
# time="2025-08-04T21:13:28+02:00" level=debug msg="writing sync type:procReady" func="libcontainer/logs.processEntry()" file="libcontainer/logs/logs.go:55"
# time="2025-08-04T21:13:28+02:00" level=debug msg="read sync type:procReady"
# time="2025-08-04T21:13:28+02:00" level=debug msg="reading sync" func="libcontainer/logs.processEntry()" file="libcontainer/logs/logs.go:55"
# time="2025-08-04T21:13:28+02:00" level=debug msg="writing sync type:procRun"
# time="2025-08-04T21:13:28+02:00" level=debug msg="reading sync"
# time="2025-08-04T21:13:28+02:00" level=debug msg="read sync type:procRun" func="libcontainer/logs.processEntry()" file="libcontainer/logs/logs.go:55"
# time="2025-08-04T21:13:28+02:00" level=debug msg="writing sync type:procError arg:{\"message\":\"error adding architecture to seccomp filter: numerical argument out of domain\"}" func="libcontainer/logs.processEntry()" file="libcontainer/logs/logs.go:55"
# time="2025-08-04T21:13:28+02:00" level=debug msg="read sync type:procError arg:{\"message\":\"error adding architecture to seccomp filter: numerical argument out of domain\"}"
# time="2025-08-04T21:13:28+02:00" level=debug msg="mount source thread: closing thread: context canceled" func="libcontainer.(*initProcess).goCreateMountSources.func1()" file="libcontainer/process_linux.go:485"
# time="2025-08-04T21:13:28+02:00" level=error msg="runc run failed: unable to start container process: error during container init: error adding architecture to seccomp filter: numerical argument out of domain"
# --- teardown ---
ok 214 runc run [seccomp] (SCMP_ACT_KILL) in 472ms
not ok 215 runc run [seccomp] (startContainer hook) in 489ms
# (in test file tests/integration/seccomp.bats, line 185)
#   `[[ "$output" == *"error running startContainer hook"* ]]' failed
# runc spec (status=0):
#
# runc run test_busybox (status=1):
# time="2025-08-04T21:13:29+02:00" level=error msg="runc run failed: unable to start container process: error during container init: unable to init seccomp: error adding architecture to seccomp filter: numerical argument out of domain"
# --- teardown ---

What version of runc are you using?

runc version 1.2.6
commit: v1.2.6-0-ge89a29929c77
spec: 1.2.0
go: go1.24.5
libseccomp: 2.6.0

Host OS information

SUSE Linux Enterprise Server 16.0 PublicRC

Host kernel information

Linux sle16 6.12.0-160000.20-default #1 SMP PREEMPT_DYNAMIC Mon Jul 21 10:20:07 UTC 2025 (b00eabe) x86_64 x86_64 x86_64 GNU/Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions