libXi regression (was Re: XQuartz tablet mouse events are at the wrong location and other Xinput headaches)

Jeremy Huddleston jeremyhu at apple.com
Wed Mar 14 18:00:00 PDT 2012


Reverting c1a5a70b51f12dedf354102217c7cd4247ed3a4b from libXi fixed the issue for me.  I haven't looked into why, but the patch's changes are certainly related:

good: libXi-1.5.99.3
bad: libXi-1.6.0

$ git bisect log
# bad: [70b730b0548ca9e408f14f2576b972beb32a0ad0] libXi 1.6.0
# good: [34964b05c16161de65709d60799b9ad97ce56296] libXi 1.5.99.3
git bisect start 'libXi-1.6.0' 'libXi-1.5.99.3'
# bad: [1b9f0394c3d4d3833f8560ae8170a4d5842419ab] Fix XIScrollClass increment value on 32-bit machines
git bisect bad 1b9f0394c3d4d3833f8560ae8170a4d5842419ab
# bad: [c1a5a70b51f12dedf354102217c7cd4247ed3a4b] Fix bus error on MIPS N32 for bug #38331.
git bisect bad c1a5a70b51f12dedf354102217c7cd4247ed3a4b

c1a5a70b51f12dedf354102217c7cd4247ed3a4b is the first bad commit
commit c1a5a70b51f12dedf354102217c7cd4247ed3a4b
Author: Michał Masłowski <mtjm at mtjm.eu>
Date:   Tue Feb 21 20:54:40 2012 +0100

    Fix bus error on MIPS N32 for bug #38331.
    
    XIValuatorClassInfo and XIScrollClassInfo might have an address
    of 4 bytes modulo 8, while they contain doubles which need 8 byte
    alignment.  This is fixed by adding extra padding after each structure
    or array in sizeDeviceClassType and adding helper functions to
    determine sizes and padding only in one place.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=38331
    Signed-off-by: Michał Masłowski <mtjm at mtjm.eu>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

:040000 040000 6b49f07dcdd66ae31add8e9b543e6d6a0586231c a389cffc1796584cc7e90ea296b57f7ecf2224d9 M	src


On Mar 14, 2012, at 5:06 PM, Peter Hutterer <peter.hutterer at who-t.net> wrote:
>> (gdb) print b->num_buttons
>> $24 = 7
>> (gdb) print b->labels[-1]
>> $25 = 498216206336
>> 
>> Based on xlsatoms, I'd expect 116-122 as the button atoms:
>> 116	Button Left
>> 117	Button Middle
>> 118	Button Right
>> 119	Button Wheel Up
>> 120	Button Wheel Down
>> 121	Button Horiz Wheel Left
>> 122	Button Horiz Wheel Right
>> 
>> It works when the client is i386/Linux or i386/darwin and fails when x86_64/darwin, ppc/Linux, or ppc64/Linux ... is this possibly an inputproto issue?
> 
> libXi or xinput, I suspect. curious though, since it works fine here in
> x86_64. Can you bisect libXi from 1.5.99.2 to 1.6.0, I wonder if we
> introduced a bug here with the alignments.
> 
> 2d638fc37b0dbf28e5c826f74f68ada83a8c3e2b is another possible candidate to
> revert and test.
> 
> put a breakpoint in libXi's copy_classes on the XIButtonClass case and see
> what comes down the wire and where the offset is introduced. if it's already
> wrong on the wire, then the server has a bug here.
> 
> Cheers,
>  Peter



More information about the xorg-devel mailing list