Hello, I see very annoying bug in sensord. When some hwmon driver returns -EINVAL (for any reason), sensord daemon will stop reading next sensors values. This means if first hwmon device fail to return value, sensord daemon will not log anything. Returning -EINVAL from kernel driver is normal (e.g. when graphic card with has internal temperature sensor is turned off) and sensord should not fail on this. Program sensors already handling this problem and will print N/A if there is reading error. I'm sending simple patch which just report NaN value when kernel report error. And also sensord will continue to reading next hwmon interfaces. Without this patch I see only these lines logged: sensord: Chip: radeon-pci-0100 sensord: Adapter: PCI adapter sensord: Error getting sensor data: radeon/#0: Can't read sensord: sensor read error (-1) And all other sensors are ignored and nothing more is logged. After my patch all hwmon sensors data are logged: sensord: Chip: radeon-pci-0100 sensord: Adapter: PCI adapter sensord: temp1: nan C sensord: Chip: i8k-virtual-0 sensord: Adapter: Virtual device sensord: Left Fan: 2685 RPM sensord: CPU: 49.0 C sensord: temp2: 55.0 C sensord: temp3: 39.0 C sensord: Chip: coretemp-isa-0000 sensord: Adapter: ISA adapter sensord: Physical id 0: 50.0 C sensord: Core 0: 47.0 C sensord: Core 1: 50.0 C -- Pali Rohár pali.rohar@xxxxxxxxx
--- lm-sensors-3.3.1/prog/sensord/sense.c.orig 2014-05-17 21:14:21.000000000 +0200 +++ lm-sensors-3.3.1/prog/sensord/sense.c 2014-05-17 21:45:27.677299361 +0200 @@ -93,11 +93,14 @@ static int get_features(const sensors_ch ret = sensors_get_value(chip, feature->dataNumbers[i], val + i); if (ret) { +#if 0 sensorLog(LOG_ERR, "Error getting sensor data: %s/#%d: %s", chip->prefix, feature->dataNumbers[i], sensors_strerror(ret)); return -1; +#endif + val[i] = nan(""); } } @@ -168,8 +171,10 @@ static int doKnownChip(const sensors_chi for (i = 0; features[i].format; i++) { ret = do_features(chip, features + i, action); +#if 0 if (ret == -1) break; +#endif } return ret;
Attachment:
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors