Turned out to be a bug in zed:
Verify parent_dev before calling udev_device_get_sysattr_value by Uglymotha · 
Pull Request #16717 · openzfs/zfs<https://github.com/openzfs/zfs/pull/16717>

-Sietse

Van: Cristian Rodríguez <crrodrig...@opensuse.org>
Verzonden: Saturday, 2 November 2024 20:07
Aan: Sietse van Zanen <sie...@wizdom.nu>
CC: systemd-devel@lists.freedesktop.org
Onderwerp: Re: [systemd-devel] Assertion 'udev_device' failed at 
src/libudev/libudev-device.c:742, function udev_device_get_sysattr_value(). 
Aborting.



On Sat, Nov 2, 2024 at 5:38 AM Sietse van Zanen 
<sie...@wizdom.nu<mailto:sie...@wizdom.nu>> wrote:
I seem to be hitting some very weird corner case causing an assertion failure. 
The offender is ZFS Event Daemon:

The following code shows the offence:
                               struct udev_device *dev;
                               if ((dev = udev_monitor_receive_device(mon)) == 
NULL) {
                                               zed_log_msg(LOG_WARNING, 
"zed_udev_monitor: receive "
                                                   "device error %d", errno);
                                               continue;
                               }
                               …..
                               sectors = udev_device_get_property_value(dev,
                                                    "ID_PART_ENTRY_SIZE");
                               if (sectors == NULL)
                                               sectors = 
udev_device_get_sysattr_value(dev, "size");

Im at a loss here as to what’s causing the assertion failure. Both 
udev_device_get_property_value and udev_device_get_sysattr_value only assert a 
valid udev_device pointer. How can the pointer get lost between these two 
function calls?

-Sietse


 you need to poll before any valid udev_device is returned to you.

Reply via email to