JDK-8154529 : some places in the invoke.c that use InvokeRequest* not protected with invokerLock
  • Type: Bug
  • Component: core-svc
  • Sub-Component: debugger
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2016-04-19
  • Updated: 2018-01-04
  • Resolved: 2016-05-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
9 b120Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
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:

Here are more places where the 'request' pointer is not protected with the invokerLock:

In general, these are pretty simple or rare cases that do not harm much.
The function invoker_isPending() is not used at all.
Posted for review: http://mail.openjdk.java.net/pipermail/serviceability-dev/2016-April/019518.html

invoker_isPending() seems unused.