[OpenJDK 2D-Dev] CR 7029934 : Xrender: Text is truncated with 64 bit Linux JRE

Phil Race philip.race at oracle.com
Wed Mar 30 23:35:03 UTC 2011


Hi Clemens,

677     if ((ids = (jint *) (*env)->GetPrimitiveArrayCritical(env, gidArray, NULL)) == NULL) {
..
688     (*env)->ReleasePrimitiveArrayCritical(env, gidArray, gids, JNI_ABORT);
                                                              ^^^^^


So the release should be on "ids".

I wonder if in the 32 bit case (or more precisely sizeof(jint) == sizeof(Glyph)
if we could skip the extra malloc and free ? Not sure how critical this is.


 723       xids = (Glyph *) malloc(sizeof(unsigned int) * glyphCnt);

The cast should now be to (unsigned int*)

I can make these changes.

BTW when I look at the XRender headers "render.h" I see that it defines
typedef unsigned long   Glyph;

so its not that the XID is defined to be 64 bits its the Glyph type
directly and this maybe is something that Xrender should have done
differently. 


Also it is (was) a bug on Solaris as well. It was pilot error on my part
that made me think otherwise.

The only thing I've seen that concerns me is I've had a couple of abrupt
disconnects from the Xserver shutting down Java2Demo. I am not sure
if that's an Xserver problem or a client problem or if its even specific
to this 64 bit remote display scenario or what .. because its not
been that easy to reproduce.

-phil.

Clemens Eisserer wrote:
> Hi Phil,
>
> The problem was caused by the assumption that sizeof(int) ==
> sizeof(XID), however Xlib uses unsigned long for XIDs, even if XIDs
> are defined to be 32-bit on wire.  According to the xorg mailing list
> ists safe to store those values in 4-byte variables, the only case
> which needs attention are arrays.
>
> In this case the problem was I passed a Glyph* to
> XRenderCompositeText, which however expected a unsigned int*. Both are
> 4bytes wide on ia32, but Glyph is 8 bytes on amd64. XRenderFreeGlyphs
> was also affected.
>
> - Clemens
>
> PS: I can't access information for 7029934 - which seems to be rather
> common for many bug-numbers I see floating arround on the mailing
> lists. Any idea why?
>
>
> 2011/3/22 Clemens Eisserer <linuxhippy at gmail.com>:
>   
>> Hi Phil,
>>
>> I'll have a look at this one soon.
>> I also hope to fix the bug causing intellij's editor to be completly
>> unuseable before jdk7's freeze phase - however I guess I'll need a
>> little help for that.
>>
>> Just remembered that I promies results some time ago, sorry, I'll send it soon.
>> Its just, university is giving me a really hard time. Starting with
>> 6th April everything will be far more relaxed =)
>>
>> Thanks, Clemens
>>
>>
>> 2011/3/22 Phil Race <philip.race at oracle.com>:
>>     
>>>        Clemens,
>>>
>>> Have you tried 64 bit Linux JRE? SQE reports, and I have verified, text is
>>> truncated
>>> But only on Linux. Solaris is OK. B&W, greyscale, LCD are all the same.
>>>
>>> -phil..
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *Change Request ID*: 7029934
>>>
>>> *Synopsis*: Xrender: Text is truncated with 64 bit Linux JRE
>>>
>>>
>>> === *Description*
>>> ============================================================
>>> java version "1.7.0-ea"
>>> Java(TM) SE Runtime Environment (build 1.7.0-ea-b134)
>>> Java HotSpot(TM) 64-Bit Server VM (build 21.0-b04, mixed mode)
>>>
>>> Platform: OEL6
>>> 2.6.32-100.28.5.el6.x86_64 #1 SMP Wed Feb 2 18:40:23 EST 2011 x86_64 x86_64
>>> x86_64 GNU/Linux
>>>
>>> Problem:
>>> When launch Java2Demo in OEL6 machine, the text partially shows in the
>>> application. It only happens in 64 bits java.
>>> I tried 32 bits java, the demo looks fine.
>>>
>>> Please see attached screen shot for detail.
>>>
>>> How to reproduce the problem:
>>> 1, Launch the demo by using jdk1.7.0-b134 ever early versions(like b120)
>>> 2, When the demo GUI comes up, you can see all text in frame shows only
>>> partially
>>> [root at dhcp-santaclara22-2fl-west-10-132-182-109 linux-x64]# bin/java -jar
>>> -Dsun.java2d.xrender=True demo/jfc/Java2D/*.jar
>>> XRender pipeline enabled
>>> Xrender: INFO: Jules library not installed.
>>>
>>> You can use the OEL6 machine to reproduce this problem,
>>> I add machine info is in comments
>>>
>>> *** (#1 of 1): 2011-03-22 16:41:39 GMT+00:00 tao.t.zhang at oracle.com
>>> *** Last Edit: 2011-03-22 17:15:42 GMT+00:00 tao.t.zhang at oracle.com
>>>
>>>
>>> === *Evaluation*
>>> =============================================================
>>> Looks bad. Seems like all text rendering that goes via Xrender is truncated.
>>> Looks like the first half of any given drawString is visible and the rest is
>>> missing. Its not specific to Java2Demo. Its in SwingSet2 and in applet
>>> demos.
>>>
>>> It seems to have been this way since the first Xrender build (b97) and its
>>> not just OEL 6. Its also Ubuntu 10.04, so probably all 64 bit Linuxes.
>>> But 64 bit Solaris on Intel/AMD is fine!
>>>
>>> I reproduced this displaying remotely from an OEL 6 box and an Ubuntu box
>>> with Solaris 11 x86 as the display server, so its presumably something on
>>> the client (application) end.
>>> The code is all the same so maybe its something to do with the compilation.
>>>
>>> *** (#1 of 1): 2011-03-22 20:37:53 GMT+00:00 philip.race at oracle.com
>>>
>>>
>>>
>>>
>>>       




More information about the 2d-dev mailing list