** 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

Reply via email to