On Tue, Jan 24, 2017 at 01:12:23 +0000, James Clarke wrote:
> I've been debugging an issue in gtk2-perl causing it to SIGBUS on
> sparc64, and traced it back to what seems to be dodgy code inside
> libx11. One of the tests calls gdk_window_set_opacity, which calls
> XChangeProperty with a pointer to a guint32, cast to char*, with the
> length set to 32 bits as expected. However, this data pointer then gets
> cast to a (long *) on line 83 of ChProp.c when calling Data32. Indeed,
> the definition of Data32 specifies that data is a (long *) on sparc64,
> since LONG64 is defined. This feels very wrong, but in and of itself is
> not too bad (I believe it violates strict aliasing).
As discussed on irc this sounds like a gtk bug, fixed by https://git.gnome.org/browse/gtk+/commit/?id=0e1a424829937abc27780da97a8bf60e81233d6c
for gtk 3.