Strange libXrender behaviour on Solaris10/SPARC

Julien Cristau jcristau at debian.org
Wed Nov 10 05:36:58 PST 2010


On Wed, Nov 10, 2010 at 13:16:48 +0100, Nicolai Stange wrote:

> Hi everybody,
> 
> after installing gtk-engines the problem occured again (and thus, the
> opensolaris patches Alan pointed me to did not solve the problem).
> 
> However I did some further investigation with xscope and gdb and tracked
> it down.  The setup the problem occurs in: I'm running mozilla on
> Solaris10/SPARC with gtk-engines (clearlooks) through 'ssh -X' with a
> local X server on Linux/x86_64 (Debian Lenny).
> 
> It is actually a problem with the xorg-server. When s client calls
> XRenderCreateLinearGradient on SPARC, this request and a following
> GetInputFocus get transmitted properly (MSB first) over the wire.  The
> xorg-server on Linux/x86_64 then converts the big endian request to
> little endian and while doing so, it errorneously overwrites the
> following GetInputFocus-request.
> The problem is in render.c:
> static void swapStops(void *stuff, int num)
> {
>     int i, n;
>     CARD32 *stops;
>     CARD16 *colors;
>     stops = (CARD32 *)(stuff);
>     for (i = 0; i < num; ++i) {
>         swapl(stops, n);
>         ++stops;
>     }
>     colors = (CARD16 *)(stops);
>     for (i = 0; i < 4*num; ++i) {
>         swaps(stops, n);
>         ++stops;
>     }
> }
> 
> When converting the colors, not stops but colors should be incremented:
> static void swapStops(void *stuff, int num)
> {
>     int i, n;
>     CARD32 *stops;
>     CARD16 *colors;
>     stops = (CARD32 *)(stuff);
>     for (i = 0; i < num; ++i) {
>         swapl(stops, n);
>         ++stops;
>     }
>     colors = (CARD16 *)(stops);
>     for (i = 0; i < 4*num; ++i) {
>         swaps(colors, n);
>         ++colors;
>     }
> }
> 
Fix is also at http://patchwork.freedesktop.org/patch/2521/ so will
hopefully get applied soon.

[...]
> swapStops overwrites the majorop-Field of the GetInputFocus-Request,
> resulting in Request- and Length-errors.
> May I expect this to get fixed in 1.7.x, that is Debian, too?
> 
I'll get the fix into the 1.7 branch (and Debian) when it's upstream in
master, thanks!

Cheers,
Julien



More information about the xorg mailing list