JDK-8180599 : Possibly miss to iterate monitors on thread exit
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 10
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2017-05-18
  • Updated: 2017-08-25
  • Resolved: 2017-05-22
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.
JDK 10
10 b21Fixed
Related Reports
Relates :  
Description
As a followup to JDK-8180175: ObjectSynchronizer only needs to iterate in-use monitors, David Holmes noted:

"When a thread terminates, omFlush is used to transfer the thread's inUseList to the global inUseList. This happens after the thread has been removed from the _threads_list and can run concurrently with a safepoint. This means that there is a window of time where the monitors in the thread's inUseList will not be seen by the safepoint oops_do processing:
- the thread oops_do won't be called because the thread is not in the thread's list
- the monitors are not yet in the global in-use-list "