> Please review this change that fixes crashes by jmm_GetThreadInfo() call.
> 
> There are several issues:
> - ThreadIdTable::lazy_initialize() has typical double-checked locking pattern 
> without proper memory barrier, that may result in uninitialized/partial 
> initialized table to be observed by other threads. Added release/acquire 
> barrier to address this issue.
> - Query ThreadIdTable can race add/remove thread operations. In short, the 
> thread returned from the query may be freed.  Fortunately, 
> jmm_GetThreadInfo() acquires stable thread list before query, so we only need 
> to make sure that returned thread is in the list (checking 
> thread->is_exiting() does not help due to the race)
> - I moved thread Id insertion code from ThreadSMR to Threads, to be symmetric 
> to thread Id removal code.
> 
> Tests:
> - [x] Tier1 on Linux and MacOSX (fastdebug)
>  (`tools/javac/annotations/typeAnnotations/IncorrectCastOffsetTest.java` 
> failure seems unrelated, it also fails in master)

Zhengyu Gu has updated the pull request incrementally with one additional 
commit since the last revision:

  Remove tailing whitespaces

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/30105/files
  - new: https://git.openjdk.org/jdk/pull/30105/files/6ae0cb01..caa63ced

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=30105&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=30105&range=01-02

  Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/30105.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/30105/head:pull/30105

PR: https://git.openjdk.org/jdk/pull/30105

Reply via email to