← Back to team overview

debcrafters-packages team mailing list archive

[Bug 2110040] Re: dbus-broker: fix compatibility with newer kernel's error code for SO_PEERPIDFD error case

 

> Please don't just change the verification tags without showing what
testing has been performed. I'm moving the tags back to verification-
needed.

Sure: I have re-performed the exact same check as described in the
templated description, with the package from -proposed instead of
manually built, and verified it still works as expected.

> So to reproduce the bug, or show that it is fixed, we need to trigger
the mentioned getsockopt() call, *AND* do that under kernel 6.16.

That is unnecessary, and unreasonable to ask. It is sufficient to show
that with the change, dbus-broker still works as expected - and it does.
IE, the getsockopt call (which runs every time there's a new client
connecting to the system or session bus) is still working fine with the
change, with current kernels.

The kernel change hasn't happened yet, as we want to be good citizens,
and ensure no regressions will happen. dbus-broker is the only client
relying on the exact old error code, so we are getting it updated in LTS
distributions that run a version that is affected (ie, v35 or newer).
We'll do the error code change afterwards. We did all this extra work as
we want to try and avoid causing issues for users running Noble and
building their own kernels (or future potential HWE backports).

** Tags removed: verification-needed verification-needed-noble verification-needed-oracular verification-needed-plucky
** Tags added: verification-done verification-done-noble verification-done-oracular verification-done-plucky

-- 
You received this bug notification because you are a member of
Debcrafters packages, which is subscribed to dbus-broker in Ubuntu.
https://bugs.launchpad.net/bugs/2110040

Title:
  dbus-broker: fix compatibility with newer kernel's error code for
  SO_PEERPIDFD error case

Status in dbus-broker package in Ubuntu:
  Fix Released
Status in dbus-broker source package in Noble:
  Fix Committed
Status in dbus-broker source package in Oracular:
  Fix Committed
Status in dbus-broker source package in Plucky:
  Fix Committed
Status in dbus-broker source package in Questing:
  Fix Released

Bug description:
  [Original Description/Impact]

  dbus-broker in noble, oracular and plucky only checks for EINVAL when
  calling the SO_PEERPIDFD getsockopt to check if a process already
  exited.

  The kernel in 6.16 is changing the return value from EINVAL to ESRCH so
  that the particular case can be distinguished from generic errors:

  https://lore.kernel.org/all/20250411-work-pidfs-
  enoent-v2-2-60b2d3bb545f@xxxxxxxxxx/

  The upstream main branch of dbus-broker has a fix for this:

  https://github.com/bus1/dbus-
  broker/commit/4b1d9da51dc2703b7596243cb555a689bb27b4c1

  Without this fix, running a new kernel with the old dbus-broker won't
  be able to detect this failure mode anymore, and dbus-broker will stop
  working in case that happens, as it has been reported at:

  https://lore.kernel.org/all/20250415223454.GA1852104@ax162/

  Backporting this back to noble/oracular/plucky will ensure that users
  running with a new kernel (e.g.: HWE, local backport) won't face this
  issue.

  [Test Plan]

  Build and install the patched dbus-broker in a container and check
  that it doesn't break:

  Noble:

  root@localhost:/tmp# apt install ./dbus-broker_35-2ubuntu0.1_amd64.deb 
  Reading package lists... Done
  Building dependency tree... Done
  Reading state information... Done
  Note, selecting 'dbus-broker' instead of './dbus-broker_35-2ubuntu0.1_amd64.deb'
  The following NEW packages will be installed:
    dbus-broker
  0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
  Need to get 0 B/169 kB of archives.
  After this operation, 430 kB of additional disk space will be used.
  Get:1 /tmp/dbus-broker_35-2ubuntu0.1_amd64.deb dbus-broker amd64 35-2ubuntu0.1 [169 kB]
  Selecting previously unselected package dbus-broker.
  (Reading database ... 27500 files and directories currently installed.)
  Preparing to unpack .../dbus-broker_35-2ubuntu0.1_amd64.deb ...
  Unpacking dbus-broker (35-2ubuntu0.1) ...
  Setting up dbus-broker (35-2ubuntu0.1) ...
  Replacing the running dbus-daemon with dbus-broker requires a reboot:
  please reboot the system when convenient.
  Created symlink /etc/systemd/user/dbus.service → /usr/lib/systemd/user/dbus-broker.service.
  Created symlink /etc/systemd/system/dbus.service → /usr/lib/systemd/system/dbus-broker.service.
  Processing triggers for man-db (2.12.0-4build2) ...
  Processing triggers for systemd (255.4-1ubuntu8) ...
  root@localhost:/tmp# systemctl daemon-reload
  root@localhost:/tmp# systemctl restart dbus-broker
  root@localhost:/tmp# systemctl status dbus-broker
  ● dbus-broker.service - D-Bus System Message Bus
       Loaded: loaded (/usr/lib/systemd/system/dbus-broker.service; enabled; preset: enabled)
       Active: active (running) since Tue 2025-05-06 15:00:08 BST; 3s ago
  TriggeredBy: ● dbus.socket
         Docs: man:dbus-broker-launch(1)
     Main PID: 2458 (dbus-broker-lau)
        Tasks: 2 (limit: 66786)
       Memory: 1.3M (peak: 2.1M)
          CPU: 10ms
       CGroup: /system.slice/dbus-broker.service
               ├─2458 /usr/bin/dbus-broker-launch --scope system --audit
               └─2459 dbus-broker --log 4 --controller 9 --machine-id b70250626e354e8481fe3ed01e2a769f --max-bytes 5368>

  May 06 15:00:08 localhost systemd[1]: Starting dbus-broker.service - D-Bus System Message Bus...
  May 06 15:00:08 localhost dbus-broker-launch[2458]: Kernel is missing AppArmor DBus support.
  May 06 15:00:08 localhost systemd[1]: Started dbus-broker.service - D-Bus System Message Bus.
  May 06 15:00:08 localhost dbus-broker-launch[2458]: Ready
  root@localhost:/tmp# cat /etc/os-release 
  PRETTY_NAME="Ubuntu 24.04 LTS"
  NAME="Ubuntu"
  VERSION_ID="24.04"
  VERSION="24.04 LTS (Noble Numbat)"
  VERSION_CODENAME=noble
  ID=ubuntu
  ID_LIKE=debian
  HOME_URL="https://www.ubuntu.com/";
  SUPPORT_URL="https://help.ubuntu.com/";
  BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/";
  PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy";
  UBUNTU_CODENAME=noble
  LOGO=ubuntu-logo

  
  Plucky:

  root@localhost:/tmp# apt install ./dbus-broker_36-1ubuntu0.1_amd64.deb 
  Note, selecting 'dbus-broker' instead of './dbus-broker_36-1ubuntu0.1_amd64.deb'
  The following packages were automatically installed and are no longer required:
    icu-devtools  libpython3.12t64   libxenmisc4.19                linux-tools-6.12.0-15
    libicu-dev    libunwind8         linux-tools-6.11.0-8          linux-tools-6.12.0-15-generic
    libicu76      libxenmisc4.17t64  linux-tools-6.11.0-8-generic
  Use 'apt autoremove' to remove them.

  Installing:
    dbus-broker

  Summary:
    Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
    Download size: 0 B / 186 kB
    Space needed: 475 kB / 14.5 GB available

  Get:1 /tmp/dbus-broker_36-1ubuntu0.1_amd64.deb dbus-broker amd64 36-1ubuntu0.1 [186 kB]
  Selecting previously unselected package dbus-broker.
  (Reading database ... 35589 files and directories currently installed.)
  Preparing to unpack .../dbus-broker_36-1ubuntu0.1_amd64.deb ...
  Unpacking dbus-broker (36-1ubuntu0.1) ...
  Setting up dbus-broker (36-1ubuntu0.1) ...
  Replacing the running dbus-daemon with dbus-broker requires a reboot:
  please reboot the system when convenient.
  Created symlink '/etc/systemd/user/dbus.service' → '/usr/lib/systemd/user/dbus-broker.service'.
  Created symlink '/etc/systemd/system/dbus.service' → '/usr/lib/systemd/system/dbus-broker.service'.
  Processing triggers for man-db (2.13.0-1) ...
  Processing triggers for systemd (257.4-1ubuntu3) ...
  root@localhost:/tmp# systemctl daemon-reload
  root@localhost:/tmp# systemctl restart dbus-broker
  root@localhost:/tmp# systemctl status dbus-broker
  ● dbus-broker.service - D-Bus System Message Bus
       Loaded: loaded (/usr/lib/systemd/system/dbus-broker.service; enabled; preset: enabled)
       Active: active (running) since Tue 2025-05-06 15:02:31 BST; 2s ago
   Invocation: f56d62e8fbef494bb7648f951f327d53
  TriggeredBy: ● dbus.socket
         Docs: man:dbus-broker-launch(1)
     Main PID: 2449 (dbus-broker-lau)
        Tasks: 2 (limit: 66786)
       Memory: 1.3M (peak: 1.9M)
          CPU: 14ms
       CGroup: /system.slice/dbus-broker.service
               ├─2449 /usr/bin/dbus-broker-launch --scope system --audit
               └─2450 dbus-broker --log 4 --controller 9 --machine-id c88acd22b631411c9e1d2467add01ca4 --max-bytes 5368>

  May 06 15:02:31 localhost systemd[1]: Starting dbus-broker.service - D-Bus System Message Bus...
  May 06 15:02:31 localhost dbus-broker-launch[2449]: Kernel is missing AppArmor DBus support.
  May 06 15:02:31 localhost systemd[1]: Started dbus-broker.service - D-Bus System Message Bus.
  May 06 15:02:31 localhost dbus-broker-launch[2449]: Ready
  root@localhost:/tmp# cat /etc/os-release 
  PRETTY_NAME="Ubuntu 25.04"
  NAME="Ubuntu"
  VERSION_ID="25.04"
  VERSION="25.04 (Plucky Puffin)"
  VERSION_CODENAME=plucky
  ID=ubuntu
  ID_LIKE=debian
  HOME_URL="https://www.ubuntu.com/";
  SUPPORT_URL="https://help.ubuntu.com/";
  BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/";
  PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy";
  UBUNTU_CODENAME=plucky
  LOGO=ubuntu-logo

  
  Oracular:

  root@localhost:/tmp# apt install ./dbus-broker_36-1ubuntu0.1_amd64.deb 
  Note, selecting 'dbus-broker' instead of './dbus-broker_36-1ubuntu0.1_amd64.deb'
  Installing:
    dbus-broker

  Summary:
    Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
    Download size: 0 B / 164 kB
    Space needed: 422 kB / 14.5 GB available

  Get:1 /tmp/dbus-broker_36-1ubuntu0.1_amd64.deb dbus-broker amd64 36-1ubuntu0.1 [164 kB]
  Selecting previously unselected package dbus-broker.
  (Reading database ... 26354 files and directories currently installed.)
  Preparing to unpack .../dbus-broker_36-1ubuntu0.1_amd64.deb ...
  Unpacking dbus-broker (36-1ubuntu0.1) ...
  Setting up dbus-broker (36-1ubuntu0.1) ...
  Replacing the running dbus-daemon with dbus-broker requires a reboot:
  please reboot the system when convenient.
  Created symlink '/etc/systemd/user/dbus.service' → '/usr/lib/systemd/user/dbus-broker.service'.
  Created symlink '/etc/systemd/system/dbus.service' → '/usr/lib/systemd/system/dbus-broker.service'.
  Processing triggers for man-db (2.12.1-3) ...
  Processing triggers for systemd (256.5-2ubuntu3) ...
  root@localhost:/tmp# systemctl daemon-reload
  root@localhost:/tmp# systemctl restart dbus-broker
  root@localhost:/tmp# systemctl status dbus-broker
  ● dbus-broker.service - D-Bus System Message Bus
       Loaded: loaded (/usr/lib/systemd/system/dbus-broker.service; enabled; preset: enabled)
       Active: active (running) since Tue 2025-05-06 15:05:32 BST; 2s ago
   Invocation: 438703731d2a488bb4db9031f50906fd
  TriggeredBy: ● dbus.socket
         Docs: man:dbus-broker-launch(1)
     Main PID: 3099 (dbus-broker-lau)
        Tasks: 2 (limit: 66786)
       Memory: 1.2M (peak: 1.9M)
          CPU: 15ms
       CGroup: /system.slice/dbus-broker.service
               ├─3099 /usr/bin/dbus-broker-launch --scope system --audit
               └─3100 dbus-broker --log 4 --controller 9 --machine-id 6d2f232cba464e4d9af4ba93985aa438 --max-bytes 5368>

  May 06 15:05:32 localhost systemd[1]: Starting dbus-broker.service - D-Bus System Message Bus...
  May 06 15:05:32 localhost dbus-broker-launch[3099]: Kernel is missing AppArmor DBus support.
  May 06 15:05:32 localhost systemd[1]: Started dbus-broker.service - D-Bus System Message Bus.
  May 06 15:05:32 localhost dbus-broker-launch[3099]: Ready
  root@localhost:/tmp# cat /etc/os-release 
  PRETTY_NAME="Ubuntu 24.10"
  NAME="Ubuntu"
  VERSION_ID="24.10"
  VERSION="24.10 (Oracular Oriole)"
  VERSION_CODENAME=oracular
  ID=ubuntu
  ID_LIKE=debian
  HOME_URL="https://www.ubuntu.com/";
  SUPPORT_URL="https://help.ubuntu.com/";
  BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/";
  PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy";
  UBUNTU_CODENAME=oracular
  LOGO=ubuntu-logo

  
  [Where problems could occur]

  The updated logic adds a new expected error code from the SO_PEERPIDFD
  getsockopt invocation. An issue here would affect the ability of dbus-
  broker to get pidfds from clients, which would cause systemd and other
  clients to fall back to pid-based tracking of requests.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dbus-broker/+bug/2110040/+subscriptions