dbus/mono/Arguments.cs has: // Must follow sizeof(DBusMessageIter) internal const int DBusMessageIterSize = 14*4; and then it assumes it can use that many bytes to store a DBusMessageIter in. Someone needs to be shot. Note that changing it to "3*Marshal.SizeOf(typeof(IntPtr)) + 11*Marshal.SizeOf(typeof(int))" won't work either, because there ends up being 4 bytes of padding before the final pointer.
This is still there. I probably should have mentioned before that this causes crashes.
I guess this is why I have the following error message (may be useful for searches): *** glibc detected *** free(): invalid next size (fast): 0x00000000008770b0 *** I usually don't like people begging ;), but _please_ have a look at this issue, this makes the dbus + mono combo unusable on a 64bit box.
Created attachment 4495 [details] [review] dbus-0.60-mono-arguments-fix.diff This fixes it even more explicitly than Dan's fix, to avoid any confusion about where the size is coming from. Just another poke and 'why isn't this blatant 64 bit snafu fixed' query from me as well.
There's another AMD64 bug with regards to QT marshalling. Attaching a patch here as well.
Created attachment 4530 [details] [review] dbus-0.60-qdbusmarshall.patch
I just checked this in, but I'm not maintaining the mono bindings (no one is), so you guys shouldn't wait on me for stuff like this in the future.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.