I have a rather "unusual" LUKS setup, there is no partition table on some of my LUKS devices, just the LUKS header and the encrypted file system inside. Since Basenji just blindly assumes every LUKS container is in a partition (a rather fragile assumption, it might even be on a RAID, LVM, etc.), it instantiates a DkDisk object for a non-existent device and crashes with this error:
Unhandled Exception: System.Exception: org.freedesktop.DBus.Error.UnknownMethod: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" doesn't exist
at org.freedesktop.DBus.PropertiesProxy.Get (System.String interface, System.String propname) [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDisk.get_IsDrive () [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDriveInfoProvider.GetDriveType (Platform.Unix.IO.DkDisk drive) [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDriveInfoProvider.FillDriveInfo (Platform.Common.IO.DriveInfo d, Platform.Unix.IO.DkDisk dev) [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDriveInfoProvider.GetAll (Boolean readyDrivesOnly) [0x00000] in <filename unknown>:0
at Platform.Gnome.IO.GioDriveInfoProvider.GetAll (Boolean readyDrivesOnly) [0x00000] in <filename unknown>:0
at Platform.Common.IO.DriveInfo.GetDrives (Boolean readyDrivesOnly) [0x00000] in <filename unknown>:0
at Basenji.Gui.DriveSelection.<RefreshListAsync>m__0 () [0x00000] in <filename unknown>:0
at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Exception: org.freedesktop.DBus.Error.UnknownMethod: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" doesn't exist
at org.freedesktop.DBus.PropertiesProxy.Get (System.String interface, System.String propname) [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDisk.get_IsDrive () [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDriveInfoProvider.GetDriveType (Platform.Unix.IO.DkDisk drive) [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDriveInfoProvider.FillDriveInfo (Platform.Common.IO.DriveInfo d, Platform.Unix.IO.DkDisk dev) [0x00000] in <filename unknown>:0
at Platform.Unix.IO.DkDriveInfoProvider.GetAll (Boolean readyDrivesOnly) [0x00000] in <filename unknown>:0
at Platform.Gnome.IO.GioDriveInfoProvider.GetAll (Boolean readyDrivesOnly) [0x00000] in <filename unknown>:0
at Platform.Common.IO.DriveInfo.GetDrives (Boolean readyDrivesOnly) [0x00000] in <filename unknown>:0
at Basenji.Gui.DriveSelection.<RefreshListAsync>m__0 () [0x00000] in <filename unknown>:0
at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0
I attached a simple fix, which works for my case. I didn't find a generic "get-device-which-contains-this" function in udisk's API, so I went with that specific check in my patch...
Many thanks for you patch, I'll check it out when I'm back from vacation :-)