Ah, the previous test case wouldn't work because the devkit-disks tool uses d-bus calls which do have a DBusGMethodInvocation context. However, this crash is triggered by a daemon-internal call of ATA smart refresh (through the 30 minute timer), which does not have a context. So it's pretty clear what the problem is.
Reproducer: In src/devkit-disks-daemon.c, change ATA_SMART_REFRESH_INTERVAL_SECONDS to "30" so that it will refresh every 30 seconds, then let the daemon run, and inhibit it with "sudo devkit-disks --inhibit sleep 3600".
**** Refreshing ATA SMART data for /sys/devices/pci0000:00/0000:00:1f.1/host0/target0:0:0/0:0:0:0/block/sda
Segmentation fault
Ah, the previous test case wouldn't work because the devkit-disks tool uses d-bus calls which do have a DBusGMethodInvo cation context. However, this crash is triggered by a daemon-internal call of ATA smart refresh (through the 30 minute timer), which does not have a context. So it's pretty clear what the problem is.
Reproducer: In src/devkit- disks-daemon. c, change ATA_SMART_ REFRESH_ INTERVAL_ SECONDS to "30" so that it will refresh every 30 seconds, then let the daemon run, and inhibit it with "sudo devkit-disks --inhibit sleep 3600".
**** Refreshing ATA SMART data for /sys/devices/ pci0000: 00/0000: 00:1f.1/ host0/target0: 0:0/0:0: 0:0/block/ sda
Segmentation fault