When a device node has no siblings hald aborts - this happens on many non-x86 architectures under NetBSD, namely macppc, sparc64 and sgimips ( x86 doesn't trigger it for some reason ) It's trivial to fix: --- hald/device_info.c.orig 2010-01-24 19:45:40.000000000 -0500 +++ hald/device_info.c @@ -1083,8 +1083,15 @@ rules_match_and_merge_device (void *fdi_ /*HAL_INFO(("no match, skip to rule (%llx)", rul e->jump_position));*/ rule = di_jump(rule); +#if 0 + /* + * XXX + * this fires when a node has a single child + * which happens on some non-x86 machines + */ if(rule == NULL) DIE(("Rule is NULL on jump")); +#endif continue; } With this hald Just Works(tm) on NetBSD/macppc: /usr/pkgsrc/sysutils/hal# lshal Dumping 71 device(s) from the Global Device List: ------------------------------------------------- udi = '/org/freedesktop/Hal/devices/computer' info.product = 'Computer' (string) info.subsystem = 'unknown' (string) info.udi = '/org/freedesktop/Hal/devices/computer' (string) netbsd.device = 'mainbus0' (string) power_management.can_hibernate = false (bool) power_management.can_suspend = true (bool) power_management.type = 'apm' (string) system.formfactor = 'desktop' (string) system.kernel.machine = 'macppc' (string) system.kernel.name = 'NetBSD' (string) system.kernel.version = '5.99.24' (string) udi = '/org/freedesktop/Hal/devices/uninorth2' info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.product = 'uninorth2' (string) info.udi = '/org/freedesktop/Hal/devices/uninorth2' (string) netbsd.device = 'uninorth2' (string) udi = '/org/freedesktop/Hal/devices/pci3' info.parent = '/org/freedesktop/Hal/devices/uninorth2' (string) info.product = 'pci3' (string) info.udi = '/org/freedesktop/Hal/devices/pci3' (string) netbsd.device = 'pci3' (string) udi = '/org/freedesktop/Hal/devices/gem0' info.parent = '/org/freedesktop/Hal/devices/pci3' (string) info.product = 'gem0' (string) info.udi = '/org/freedesktop/Hal/devices/gem0' (string) netbsd.device = 'gem0' (string) udi = '/org/freedesktop/Hal/devices/brgphy1' info.parent = '/org/freedesktop/Hal/devices/gem0' (string) info.product = 'brgphy1' (string) info.udi = '/org/freedesktop/Hal/devices/brgphy1' (string) netbsd.device = 'brgphy1' (string) ... etc.
Is the fix still needed (HAL is in maintenance mode)?
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.