libXi-1.3.2: SIGBUS in ParseClassInfo on sparc/64 bit

Nicolai Stange nicolai.stange at zmaw.de
Thu Oct 14 04:23:01 PDT 2010


  Hi everybody,

I've got a SIGBUS on sparc/64 bit in ParseClassInfo here:
XListDev.c:126:  B->class = ButtonClass;

the reason is that B->class is an XID which is unsigned long which is 
8byte here.
B points to an address not divisible by eight because there have been 
some XAxisInfo's put before it in the *Any-Storage (in previous 
iterations of the same loop).
sizeof(XAxisInfo)=3*sizeof(int) = 0x0C and thus, it breaks the alignment 
at some point in *Any.

A quick fix that works here is to replace
int resolution
by
long resolution
in struct _XAxisInfo, XInput.h:809

Mabe you'd want to do some union magic here...

Regards

Nicolai




More information about the xorg mailing list