I have the same problem.
I think it's because the dbus' error struct isn't initialized, when a event
that
hald-addon-acpi cannot handle, like powersaved "thermal_zone" is issued.
I made a patch for the latest version, it works for me...
--- a/hal-0.5.9.1/hald/linux/addons/addon-acpi.c 2007-08-29 22:04:47.736784387 +0200
+++ b/hal-0.5.9.1/hald/linux/addons/addon-acpi.c 2007-08-29 23:48:00.200028822 +0200
@@ -188,6 +188,7 @@ main_loop (LibHalContext *ctx, FILE *eve
while (fgets (event, sizeof event, eventfp))
{
HAL_DEBUG (("event is '%s'", event));
+ dbus_error_init (&error);
if (sscanf (event, "%s %s %x %x", acpi_path, acpi_name, &acpi_num1, &acpi_num2) == 4) {
char udi[256];
@@ -200,7 +201,6 @@ main_loop (LibHalContext *ctx, FILE *eve
HAL_DEBUG (("button event"));
/* TODO: only rescan if button got state */
- dbus_error_init (&error);
if (libhal_device_rescan (ctx, udi, &error)) {
dbus_error_init (&error);
type = libhal_device_get_property_string(ctx, udi,
@@ -216,11 +216,9 @@ main_loop (LibHalContext *ctx, FILE *eve
}
} else if (strncmp (acpi_path, "ac_adapter", sizeof ("ac_adapter") - 1) == 0) {
HAL_DEBUG (("ac_adapter event"));
- dbus_error_init (&error);
libhal_device_rescan (ctx, udi, &error);
} else if (strncmp (acpi_path, "battery", sizeof ("battery") - 1) == 0) {
HAL_DEBUG (("battery event"));
- dbus_error_init (&error);
libhal_device_rescan (ctx, udi, &error);
#ifdef BUILD_ACPI_IBM
} else if (strncmp (acpi_path, "ibm/hotkey", sizeof ("ibm/hotkey") -1) == 0) {
@@ -240,7 +238,9 @@ main_loop (LibHalContext *ctx, FILE *eve
}
}
- dbus_error_free (&error);
+ if (dbus_error_is_set (&error)) {
+ dbus_error_free (&error);
+ }
fclose (eventfp);
}