[OpenJDK 2D-Dev] RFR: 8028539: Endless loop in native code of sun.java2d.loops.ScaledBlit

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Wed Oct 29 14:47:53 UTC 2014


Hi, Jim, Phil.
I just look at this code and have a related question. Why we cannot clip 
source coordinates(using invers transform)?  This:
- solve this issue
- speedup all our general loops, which are based on intermediate 
buffers(including renderImageXform())
- we can return earlier if a clip&src will be empty, this is important 
in case of single thread rendering.

On 28.10.2014 1:02, Jim Graham wrote:
> That looks good.  You bring up good points as well.  The main thing I 
> was worried about is hanging an automated regression test run if there 
> is ever a regression...
>
>         ...jim
>
> On 10/27/14 2:49 PM, Phil Race wrote:
>> I can add othervm but each VM invocation slows down the
>> overall testing time and I'd like to think this only will be run on
>> versions that do not have the bug.
>>
>> I added the custom time out code so that I was not reliant on the
>> harness to test.
>>
>> Certainly I can delete all of that and just go to
>> @run main/othervm/timeout=60
>>
>> 60 up from 15 because it  needs to include othervm overhead and
>> avoid/minimise spurious failures
>>
>> See http://cr.openjdk.java.net/~prr/8028539.1/
>>
>> -phil.
>>
>> On 10/27/2014 2:10 PM, Jim Graham wrote:
>>> The fix looks fine.  Isn't there a timeout you can set on the unit
>>> test rather than rolling your own inside the test?  Also, even if you
>>> interrupt the test, if the failure mode is an infinite loop in native
>>> code then the VM you are running in is probably not going to be happy.
>>> That only happens when the test fails, but is it worth running in a
>>> separate VM just in case?
>>>
>>>             ...jim
>>>
>>> On 10/27/14 1:51 PM, Phil Race wrote:
>>>> https://bugs.openjdk.java.net/browse/JDK-8028539
>>>> http://cr.openjdk.java.net/~prr/8028539/
>>>>
>>>> The trigger for the bug is that there is a translate component on the
>>>> graphics
>>>> which overflows what can be stored in a integer, and the native 
>>>> code we
>>>> reach
>>>> cannot handle this.
>>>>
>>>> Although the sofware loops was hanging, additionally D3D and OGL on
>>>> Windows
>>>> were not clipping this properly. The rendering appeared on screen
>>>> when it
>>>> should have been clipped.
>>>>
>>>> The fix is to add a test to see if any value overflows and then 
>>>> punt to
>>>> the TransformHelper code which can handle and clip this properly.
>>>>
>>>> -phil.
>>


-- 
Best regards, Sergey.




More information about the 2d-dev mailing list