** Description changed:
== Summary ==
ApparmorTest.test_snapd_snap_with_vendored_apparmor in ubuntu_qrt_apparmor
failed with 1 test case failure on xenial 4.4.0-291.325 generic s390x.
The test fails while refreshing the snapd snap, before checking for the
vendored AppArmor parser or restarting the AppArmor services. The snap
command terminates with SIGILL (shell exit status 132).
+
+ Command like snap list, or snap version will crash:
+ $ snap list
+ Illegal instruction (core dumped)
GDB shows that /usr/bin/snap re-executes the snapd binary from revision
28648 (2.78+g235.8d4d073), then faults during _dl_start in the dynamic
loader bundled with that snap. The instruction immediately before the
reported PC has bytes b9 e3 07 27. Opcode B9E3 is SELGR, a z15/arch13
instruction, while the guest reports machine type 2964 (IBM z13).
The fault is consistent with executing this unsupported instruction.
The same snapd revision also crashes when booted into the previous kernel,
4.4.0-290.324. This does not support a regression introduced specifically
by the 4.4.0-291.325 kernel update. No AppArmor regression has been
demonstrated; the test is blocked by a snapd runtime compatibility failure.
Summary: 0 PASSED, 0 SKIPPED, 1 FAILED
== Test Information ==
* SRU Cycle: Not provided
* Series: xenial (Ubuntu 16.04.7 LTS)
* Package: linux (generic)
* Kernel Version: 4.4.0-291.325 (4.4.0-291-generic)
* Comparison Kernel: 4.4.0-290.324 (4.4.0-290-generic)
* Arch: s390x
* Cloud / Target: IBM z/VM 6.4.0 guest, machine type 2964 (z13), 8 CPUs
* Test Suite: ubuntu_qrt_apparmor
* Test Case: ApparmorTest.test_snapd_snap_with_vendored_apparmor
* AppArmor deb package: 2.10.95-0ubuntu2.12
* snapd deb package: 2.48.3
* snapd snap revision: 28648
* snapd snap version: 2.78+g235.8d4d073
* Init: systemd
== Failure Log ==
$ sudo python2 ./test-apparmor.py -v
ApparmorTest.test_snapd_snap_with_vendored_apparmor
test_snapd_snap_with_vendored_apparmor (__main__.ApparmorTest)
Test snapd snap ... FAIL
Traceback (most recent call last):
- File "./test-apparmor.py", line 346, in
test_snapd_snap_with_vendored_apparmor
- self.refresh_snap("snapd", track=track)
- File "/home/ubuntu/qa-regression-testing/scripts/testlib.py", line 1493, in
refresh_snap
- (snapname, track, report))
+ File "./test-apparmor.py", line 346, in
test_snapd_snap_with_vendored_apparmor
+ self.refresh_snap("snapd", track=track)
+ File "/home/ubuntu/qa-regression-testing/scripts/testlib.py", line 1493, in
refresh_snap
+ (snapname, track, report))
AssertionError: Failed to refresh snap snapd to track latest/stable
Output:
Ran 1 test in 0.196s
FAILED (failures=1)
== Standalone Reproduction ==
On the affected guest with snapd snap revision 28648 installed:
$ /usr/bin/snap version
Illegal instruction (core dumped)
$ sudo snap refresh --channel=latest/stable snapd
Illegal instruction (core dumped)
$ rc=$?
$ printf 'exit status: %s\n' "$rc"
exit status: 132
$ readlink -f /snap/snapd/current
/snap/snapd/28648
Disabling client re-exec allows the distro-packaged client to start:
$ SNAP_REEXEC=0 /usr/bin/snap version
snap 2.48.3
snapd unavailable
series -
$ sudo env SNAP_REEXEC=0 /usr/bin/snap list
error: cannot list snaps: cannot communicate with server: Get
http://localhost/v2/snaps: dial unix /run/snapd.socket: connect: connection
refused
systemctl status snapd.service reports:
Main PID: 1822 (code=killed, signal=ILL)
Kernel log excerpt:
User process fault: interruption code 0001 ilc:2 in
ld64.so.1[3ff85000000+2d000]
CPU: 3 PID: 4197 Comm: snap Not tainted 4.4.0-291-generic #325-Ubuntu
== GDB Evidence ==
GDB: GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
$ gdb --args /usr/bin/snap version
(gdb) set pagination off
(gdb) unset environment SNAP_REEXEC
(gdb) run
process 2718 is executing new program: /snap/snapd/28648/usr/lib/snapd/snapd
Thread 1 "snap" received signal SIGILL, Illegal instruction.
0x000003fffdf9b334 in _dl_start () from
/snap/snapd/current/usr/lib/s390x-linux-gnu/ld64.so.1
(gdb) bt
#0 0x000003fffdf9b334 in _dl_start () from
/snap/snapd/current/usr/lib/s390x-linux-gnu/ld64.so.1
#1 0x000003fffdf9a464 in _start () from
/snap/snapd/current/usr/lib/s390x-linux-gnu/ld64.so.1
Relevant mapping:
Start: 0x3fffdf80000 End: 0x3fffdfad000 Offset: 0x0
File: /snap/snapd/28648/usr/lib/s390x-linux-gnu/ld64.so.1
Disassembly excerpt:
- 0x000003fffdf9b328 <_dl_start+1176>: agr %r10,%r14
- 0x000003fffdf9b32c <_dl_start+1180>: tmll %r2,4
- 0x000003fffdf9b330 <_dl_start+1184>: .long 0xb9e30727
+ 0x000003fffdf9b328 <_dl_start+1176>: agr %r10,%r14
+ 0x000003fffdf9b32c <_dl_start+1180>: tmll %r2,4
+ 0x000003fffdf9b330 <_dl_start+1184>: .long 0xb9e30727
=> 0x000003fffdf9b334 <_dl_start+1188>: stg %r2,160(%r15)
- 0x000003fffdf9b33a <_dl_start+1194>: clgrjnl %r14,%r10,0x3fffdf9b360
+ 0x000003fffdf9b33a <_dl_start+1194>: clgrjnl %r14,%r10,0x3fffdf9b360
The old GDB displays the B9E3 opcode as .long. The s390 operation
exception can report the address after the faulting instruction, which
explains the PC pointing to the following STG instruction.
Opcode reference (B9E3 SELGR, z15/arch13):
https://raw.githubusercontent.com/RTEMS/sourceware-mirror-binutils-gdb/master/opcodes/s390-opc.txt
== Previous Kernel Comparison ==
On October 13, 2026, the test on 4.4.0-290.324 completed with:
Test snapd snap ... skipped 'snapd snap does not have a vendored
apparmor_parser'
Ran 1 test in 35.354s
OK (skipped=1)
That was a runtime skip after entering the test, not a kernel-version
exclusion. The snapd revision used in that historical run is unknown.
The test refreshes snapd across stable, candidate, beta, and edge, so the
historical result is not a controlled comparison of identical userspace.
Also, any nonzero sandbox-features result is treated as absence of the
required feature; the historical skip alone does not establish why that
check returned nonzero.
After rebooting the currently affected guest into 4.4.0-290-generic:
$ /usr/bin/snap version
Illegal instruction (core dumped)
$ readlink -f /snap/snapd/current
/snap/snapd/28648
== Expected Result ==
The snapd runtime should execute on supported target CPUs. With a working
runtime, the test should validate the vendored AppArmor integration, or
skip if the required parser feature is genuinely unavailable.
== Triage Notes ==
This report defaults to ubuntu-kernel-tests to track the blocked RT case.
The evidence points to the loader bundled in the snapd snap, so a snapd
task or referral to the snapd maintainers is appropriate. The loader's
build provenance and intended minimum CPU baseline still need review.
Do not treat SIGILL as an ordinary missing-feature skip. Disabling
re-exec is diagnostic only and does not validate the integration under
test. No compatible replacement revision has been verified yet.
No rt-hints comparison was performed, as explicitly requested by the
reporter. The SRU cycle tag is omitted because the cycle was not provided.
** Summary changed:
- ApparmorTest.test_snapd_snap_with_vendored_apparmor in ubuntu_qrt_apparmor
failed with 1 test case on xenial (4.4.0-291.325) generic s390x
+ snap commands failed with Illegal instruction (core dumped) on s390x Z13
** Also affects: snapd (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2172336
Title:
snap commands failed with Illegal instruction (core dumped) on s390x
Z13
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/2172336/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs