Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8154529

some places in the invoke.c that use InvokeRequest* not protected with invokerLock

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 9
    • 9
    • core-svc
    • None
    • b120
    • generic
    • generic

      It seems, the invokerLock is to protect any uses of the 'request' pointer that points to the field ThreadNode.currentInvoke, not to protect the saveGlobalRef() call itself. So that, we have a hole in synchronization that was nicely discovered by Severin G in the fix for bug:
        https://bugs.openjdk.java.net/browse/JDK-8153711

      Here are more places where the 'request' pointer is not protected with the invokerLock:
          invoker_enableInvokeRequests()
          invoker_isPending()
          invoker_isEnabled().

      In general, these are pretty simple or rare cases that do not harm much.
      The function invoker_isPending() is not used at all.

            sgehwolf Severin Gehwolf
            sspitsyn Serguei Spitsyn
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: