Comment 8 for bug 1855189

Revision history for this message
Heitor Alves de Siqueira (halves) wrote :

# VERIFICATION FOCAL

Validation performed on a 6-core VM with 8Gb or RAM. The following stress-ng command was running throughout the test from the description:
# stress-ng --class memory --class vm --all 1 --timeout 96h

Afterwards, the udevadm test loop was executed as below:
# date; while /bin/true; do
    sudo udevadm control --reload-rules
    sudo udevadm trigger
    sudo udevadm settle --timeout=3
  done
Thu Apr 11 19:19:18 UTC 2024
...

A few minutes later, the errors started showing up on journald:
# journalctl --follow -b -u usbguard | grep -A2 "failed to read"
Apr 11 19:21:59 z-rotomvm34 usbguard-daemon[197214]: [1712863318.753] (E) ueventProcessRead: failed to read pending uevent: rc=-1 errno=105
Apr 11 19:21:59 z-rotomvm34 usbguard-daemon[197214]: [1712863318.755] (E) UEventDeviceManager thread: UEvent device manager: recvmsg: No buffer space available

..and usbguard became unresponsive.

This seems good indication that the reproducer is valid. I then upgraded to the usbguard version from proposed and repeated the tests (plus stress-ng workload). The VM has been running for many hours since then, and journald indicates that we've triggered the ENOBUFS issues more than a few times. usbguard-daemon continued chugging along and responding to events, so we can mark this as verified.

Below are the verification logs.
###

$ dpkg -l | grep usbguard
ii libusbguard0 0.7.6+ds-1ubuntu1 amd64 USB device authorization policy framework - shared library
ii usbguard 0.7.6+ds-1ubuntu1 amd64 USB device authorization policy framework

$ date; while /bin/true; do
  sudo udevadm control --reload-rules
  sudo udevadm trigger
  sudo udevadm settle --timeout=3
done
Tue Apr 16 10:20:33 UTC 2024

# stress-ng --class memory --class vm --all 1 --timeout 96h

$ sudo journalctl -b -u usbguard | grep -A1 "failed to read"
Apr 16 13:40:40 z-rotomvm34 usbguard-daemon[712]: [1713274840.663] (E) ueventProcessRead: failed to read pending uevent (returning): rc=
-1 errno=105
Apr 16 13:40:40 z-rotomvm34 usbguard-daemon[712]: [1713274840.827] (A) uid=0 pid=712 result='SUCCESS' device.rule='allow id 1d6b:0001 se
rial "0000:00:04.0" name "UHCI Host Controller" hash "sKXn6PthDDlGgdxZHdnlUQ9DROkH/YSojkBlfpcnsaU=" parent-hash "9Ii0Zm8Mvu2nYz9z/EgAXJ/ed6bLW8Ctv1iUD5rh6qY=" via-port "usb2" with-interface 09:00:00 with-connect-type ""' device.system_name='/devices/pci0000:00/0000:00:04.0/usb2' type='Device.Present'
--
Apr 16 14:15:45 z-rotomvm34 usbguard-daemon[712]: [1713276945.707] (E) ueventProcessRead: failed to read pending uevent (returning): rc=-1 errno=105
Apr 16 14:15:45 z-rotomvm34 usbguard-daemon[712]: [1713276945.709] (A) uid=0 pid=712 result='SUCCESS' device.rule='allow id 0627:0001 serial "28754-0000:00:04.7-1" name "QEMU USB Tablet" hash "74abnf32ZntGQv1XK1k5t/IqWo3wxePUnjpidwCzMk4=" parent-hash "CsKOZ6IY8v3eojsc1fqKDW84V+MMhD6HsjjojcZBjSg=" via-port "1-1" with-interface 03:00:00 with-connect-type "unknown"' device.system_name='/devices/pci0000:00/0000:00:04.7/usb1/1-1' type='Device.Present'
--
Apr 16 14:43:09 z-rotomvm34 usbguard-daemon[712]: [1713278589.740] (E) ueventProcessRead: failed to read pending uevent (returning): rc=-1 errno=105
Apr 16 14:43:10 z-rotomvm34 usbguard-daemon[712]: [1713278590.573] (A) uid=0 pid=712 result='SUCCESS' device.rule='allow id 1d6b:0001 serial "0000:00:04.0" name "UHCI Host Controller" hash "sKXn6PthDDlGgdxZHdnlUQ9DROkH/YSojkBlfpcnsaU=" parent-hash "9Ii0Zm8Mvu2nYz9z/EgAXJ/ed6bLW8Ctv1iUD5rh6qY=" via-port "usb2" with-interface 09:00:00 with-connect-type ""' device.system_name='/devices/pci0000:00/0000:00:04.0/usb2' type='Device.Present'