[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-xorg
Subject:    Re: libXi-1.3.2: SIGBUS in ParseClassInfo on sparc/64 bit
From:       walter harms <wharms () bfs ! de>
Date:       2010-10-14 13:28:13
Message-ID: 4CB7056D.2080809 () bfs ! de
[Download RAW message or body]



Julien Cristau schrieb:
> 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).
> 

perhaps an __attribute__ ((aligned (8))) will help ?
can you test it with a small sample programm ?

re,
 wh
_______________________________________________
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: freedesktop-xorg@progressive-comp.com
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic