Bug 26231

Summary: hald aborts device enumeration on non-x86 NetBSD
Product: hal Reporter: Michael Lorenz <macallan>
Component: haldAssignee: David Zeuthen (not reading bugmail) <zeuthen>
Status: NEW --- QA Contact:
Severity: blocker    
Priority: medium CC: danny.kukawka
Version: unspecified   
Hardware: All   
OS: NetBSD   
Whiteboard:
i915 platform: i915 features:

Description Michael Lorenz 2010-01-25 17:03:01 UTC
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.
Comment 1 Danny Kukawka 2011-08-10 02:15:57 UTC
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.