On Sat, Nov 2, 2024 at 5:38 AM Sietse van Zanen <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.