Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 9
    • Fix Version/s: 9
    • Component/s: client-libs
    • Labels:
    • Subcomponent:
      2d
    • Resolved In Build:
      b124
    • CPU:
      generic
    • OS:
      generic

      Backports

        Description

        After some investigation of the problem I was able to create a test for the JDK-7172749.

        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

          Issue Links

            Activity

            Hide
            hgupdate HG Updates added a comment -
            URL: http://hg.openjdk.java.net/jdk9/client/jdk/rev/20365a3a5763
            User: serb
            Date: 2016-05-30 10:43:55 +0000
            Show
            hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk9/client/jdk/rev/20365a3a5763 User: serb Date: 2016-05-30 10:43:55 +0000
            Hide
            hgupdate HG Updates added a comment -
            URL: http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/20365a3a5763
            User: lana
            Date: 2016-06-22 19:53:10 +0000
            Show
            hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/20365a3a5763 User: lana Date: 2016-06-22 19:53:10 +0000

              People

              • Assignee:
                serb Sergey Bylokhov
                Reporter:
                serb Sergey Bylokhov
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: