[OpenJDK 2D-Dev] [9] Review Request: 8158072 Need a test for JDK-7172749

Phil Race philip.race at oracle.com
Fri May 27 19:17:34 UTC 2016


I suppose this will pass on the various platforms and pipelines since
we've only seen the bug reported against xrender ? ....

  41  * @bug 8158072

I think you should also include 7172749 on this line.

-phil.


On 05/27/2016 11:47 AM, Sergey Bylokhov wrote:
> Hello.
> Please review the new test for jdk9.
> To me the reason of JDK-7172749 [1] falling was curious. So I decided 
> to dig into it.
>
> To reproduce the bug the next sequence is necessary:
> Thread A
>  - create the surface
>  - SG2D is created for the surface
>  - SG2D.drawLine is called
>  - XRRenderer(Pipe).drawLine is called
>  - ========= STOP "THREAD A" for a nanoseconds=========
>
> Thread B
>  - SG2D is created for the surface create in Thread A
>  - SG2D.drawLine is called or any other draw operations.
>  - The surface is flushed.
>
> Thread A
>  -  ========= RUN "THREAD A" again=========
>  - (we still inside XRRenderer(Pipe).drawLine)
>  - SG2D.getCompClip() is called, and this caused revalidation of SG2D, 
> because it was already flushed. This means that the surface/pipes etc 
> are changed, but note we still in the old XRRenderer(PixelDrawPipe) 
> which actually should be disposed as well
>  - we try to use the new surface and got ClassCastException.
>  - After the fix we will start to draw the line again from 
> "SG2D.drawLine" above, using new surface and the new PixelDrawPipe.
>
> The interesting thing is how we will work if revalidation will replace 
> the surface to the same type(so ClassCastException will not occurred) 
> but the pipe will be changed to the new? I cannot prove it but it 
> seems that we will draw something to the new surface using the old 
> PixelDrawPipe. (But this is only for the record if someone will work 
> on this/or similar issues).
>
> And the test which reproduce the bug.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8158072
> Webrev can be found at: 
> http://cr.openjdk.java.net/~serb/8158072/webrev.00
>
> [1] https://bugs.openjdk.java.net/browse/JDK-7172749
>




More information about the 2d-dev mailing list