skip failing callouts

Richard Hughes hughsient at gmail.com
Tue Aug 30 08:23:01 PDT 2005


On Fri, 2005-08-26 at 09:40 +0200, Danny Kukawka wrote:
> On Friday 26 August 2005 03:52, Kay Sievers wrote:
> > This fixes the the handling of failing or non-existing callouts specified
> > in fdi files. In this case HAL never initialized completely and the daemon
> > killed itself after the specified timeout for the callouts.
> >
> > With this patch HAL skips failing callouts in the execution list instead of
> > waiting in the mainloop to be killed. :)
> 
> Tested and it works as expected fine. No suicide HAL anymore ;)

No so sure. I'm developing a method that calls a single script, and I'm
getting a seg-fault in hald when this script is not present.

Did you test this with only one callout?

15:40:04.232 [I] hald_dbus.c:2895: OK for method 'SetLCDBrightness' with
signature 'i' on interface
'org.freedesktop.Hal.Device.SystemPowerManagement' for UDI
'/org/freedesktop/Hal/devices/acpi_toshiba' and execpath
'hal-system-power-set-brightness'
15:40:04.234 [E] util.c:684: Couldn't spawn
'hal-system-power-set-brightness' err=Failed to execute child process
"hal-system-power-set-brightness" (Permission denied)!
Segmentation fault

When I strace hald, I see a value of device = 0x1 is present for
*device.

[hald/device.c] hal_device_num_properties (HalDevice *device)

which is quite clearly going to trip up:

[hald/device.c] g_slist_length (device->properties)

I've tried to trace back the code, and I think I'm under the
understanding that callout_failed doesn't check to see if that callout
was last.

But I don't really understand the code flow, so someone with more
expertise in that area will have to help me.

Thanks,

Richard.



More information about the hal mailing list