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

Julien Cristau jcristau at debian.org
Thu Oct 14 04:38:55 PDT 2010


On Thu, Oct 14, 2010 at 13:23:01 +0200, Nicolai Stange wrote:

>  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
> 
That would break ABI, though, so we can't do that...  I think we should
make sure the length field of a XAnyClassInfo is a multiple of
sizeof(XID).

Cheers,
Julien



More information about the xorg mailing list