making hald-probe-storage non executable helps but all storage related functionality is lost. my storage configurtion is: ../../sdg ../../sdg1 ../../sdg2 ../../sr0 ../../sdc ../../sdd ../../sde ../../sdf ../../sda ../../sdb # mdadm --detail /dev/md4 /dev/md4: Version : 1.00 Creation Time : Mon Nov 16 22:58:00 2009 Raid Level : raid0 ........... Events : 0 Number Major Minor RaidDevice State 0 8 32 0 active sync /dev/sdc 1 8 48 1 active sync /dev/sdd 2 8 64 2 active sync /dev/sde 3 8 80 3 active sync /dev/sdf # pvdisplay --- Physical volume --- PV Name /dev/md4 VG Name main ........... --- Physical volume --- PV Name /dev/sda VG Name main ........... --- Physical volume --- PV Name /dev/sdg2 VG Name main ........... --- Physical volume --- PV Name /dev/sdb VG Name main ........... # lvdisplay --- Logical volume --- LV Name /dev/main/r VG Name main ........... Block device 253:3 --- Logical volume --- LV Name /dev/main/w VG Name main ........... Block device 253:4 --- Logical volume --- LV Name /dev/main/s VG Name main ........... Block device 253:5 --- Logical volume --- LV Name /dev/main/h VG Name main ........... Block device 253:6 --- Logical volume --- LV Name /dev/main/m VG Name main ........... Block device 253:7 --- Logical volume --- LV Name /dev/main/i VG Name main ........... Block device 253:8 --- Logical volume --- LV Name /dev/main/vm VG Name main ........... Block device 253:9 Reproducible: Always Steps to Reproduce:
Created attachment 220699 [details] emerge --info emerge --info
Created attachment 220701 [details] full debug output of hald full debug output of hald
The issue is that the probe ran for longer than 20 seconds, causing a timeout error. That's a fairly big array set; maybe it's actually taking >20 seconds to spin up and probe all the drives? Are you willing to do mods to your hal source to see? If so, could you change HAL_HELPER_TIMEOUT in hald/hald_runner.h to something higher (like maybe 60000 rather than 20000) and see if that fixes your problem? If you're not comfortable making the mod yourself, I can whip up a patch.
Nop this does not fix the problem actually hald does not stay active for anything near 20 seconds. # time hald --daemon=no device udi = /org/freedesktop/Hal/devices/temp/136 linux.hotplug_type = 2 0x2 (int) linux.subsystem = 'tty' (string) serial.originating_device = '/org/freedesktop/Hal/devices/platform_serial8250' (string) serial.device = '/dev/ttyS1' (string) serial.port = 1 0x1 (int) serial.type = 'platform' (string) info.subsystem = 'tty' (string) info.product = 'Platform Device (serial8250)' (string) linux.sysfs_path = '/sys/devices/platform/serial8250/tty/ttyS1' (string) info.parent = '/org/freedesktop/Hal/devices/platform_serial8250' (string) info.category = 'serial' (string) linux.device_file = '/dev/ttyS1' (string) device udi = /org/freedesktop/Hal/devices/temp/137 linux.hotplug_type = 2 0x2 (int) linux.subsystem = 'tty' (string) serial.originating_device = '/org/freedesktop/Hal/devices/platform_serial8250' (string) serial.device = '/dev/ttyS2' (string) serial.port = 2 0x2 (int) serial.type = 'platform' (string) info.subsystem = 'tty' (string) info.product = 'Platform Device (serial8250)' (string) linux.sysfs_path = '/sys/devices/platform/serial8250/tty/ttyS2' (string) info.parent = '/org/freedesktop/Hal/devices/platform_serial8250' (string) info.category = 'serial' (string) linux.device_file = '/dev/ttyS2' (string) device udi = /org/freedesktop/Hal/devices/temp/138 linux.hotplug_type = 2 0x2 (int) linux.subsystem = 'tty' (string) serial.originating_device = '/org/freedesktop/Hal/devices/platform_serial8250' (string) serial.device = '/dev/ttyS3' (string) serial.port = 3 0x3 (int) serial.type = 'platform' (string) info.subsystem = 'tty' (string) info.product = 'Platform Device (serial8250)' (string) linux.sysfs_path = '/sys/devices/platform/serial8250/tty/ttyS3' (string) info.parent = '/org/freedesktop/Hal/devices/platform_serial8250' (string) info.category = 'serial' (string) linux.device_file = '/dev/ttyS3' (string) *** [DIE] hald_runner.c:runner_died():204 : Runner died real 0m0.387s user 0m0.201s sys 0m0.150s
Created attachment 221873 [details, diff] changes printfs in runner.c to fprintf there are some printfs in hald-runner/runner.c that appears are causing the problem. The patch changes them to fprintf(stderr, ....). This fixes it for me.
That is very strange. I can't see why that should cause it to fail. Does it still fail if you fprintf to stdout rather than stderr? Or maybe it was just the recompile that fixed it?
Yep it fails with fprintf(stdout, ...). And it always fails in the same printf. I did catch that by pure chance by redirecting all logs of probe-storage, probe-volume and at the end hald-runner in separate files for every process instance. And when I changed the printf to LOG... it just started working. This is what hald-runner dumps the last printf causes the hald-runner process to die. [11161]: 299 -> Run started hald-generate-fdi-cache (60000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-generate-fdi-cache', program_dir is '/usr/libexec' [11161]: 198 -> pid 11162: rc=1 signaled=0: /usr/libexec/hald-generate-fdi-cache [11161]: 299 -> Run started hal-system-power-pm-is-supported (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hal-system-power-pm-is-supported', program_dir is '/usr/libexec' [11161]: 198 -> pid 11163: rc=0 signaled=0: /usr/libexec/hal-system-power-pm-is-supported [11161]: 299 -> Run started hald-addon-input (0) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-addon-input', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-hiddev (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-hiddev', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-storage (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-storage', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-pc-floppy (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-pc-floppy', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-serial (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-serial', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-serial (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-serial', program_dir is '/usr/libexec' [11161]: 299 -> Run started hald-probe-serial (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-serial', program_dir is '/usr/libexec' [11161]: 198 -> pid 11203: rc=1 signaled=0: /usr/libexec/hald-probe-serial [11161]: 299 -> Run started hald-probe-serial (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hald-probe-serial', program_dir is '/usr/libexec' [11161]: 198 -> pid 11204: rc=1 signaled=0: /usr/libexec/hald-probe-serial [11161]: 198 -> pid 11205: rc=1 signaled=0: /usr/libexec/hald-probe-serial [11161]: 198 -> pid 11206: rc=0 signaled=0: /usr/libexec/hald-probe-serial [11161]: 299 -> Run started hal-storage-cleanup-all-mountpoints (20000) (0) ![11161]: 312 -> full path is '/usr/libexec/hal-storage-cleanup-all-mountpoints', program_dir is '/usr/libexec'
Hi, Any news about this one?
No. I can't get it to fail, and I can't apply a black magic patch that shouldn't make any difference. Until I (or anyone, really) can figure out why stdout fails but stderr is fine, we're stuck.
Hmm my disk setup had recently changed due to dist failure and now I've tried unpached version and it works. The differences is that now there is no md4 and all disks are in the lvm volume group. I suppose that now we"ll never know what was the cause.
Well, that's unfortunate. However, if it comes back, please re-open so we can track it down.