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);
 }
 

Reply via email to