That needs special handling during initialization: Mutexes are initialized at VM init, but NMT lives before that. However, before VM init - and during, really - we are effectively single threaded (effectively since libvm dlopen-induced C++ init and CJVM may run on different threads, and usually do, but they don't run concurrently). That means we don't need synchronization via mutex anyway.
Part of the work would be to come up with the correct mutex lock rank in order to not trigger deadlock errors. Another part would be to add "assert_locked" into sections that should happen under lock protection, and to make sure that all code paths are properly locked.
- is cloned by
-
JDK-8346123 [REDO] NMT should not use ThreadCritical
-
- Resolved
-
- relates to
-
JDK-8343238 NMT crashes: multiple assertion failures
-
- Closed
-
-
JDK-8343726 [BACKOUT] NMT should not use ThreadCritical
-
- Resolved
-
-
JDK-8343244 Aarch64: Internal Error virtualMemoryTracker.cpp:444 assert(reserved_rgn != nullptr) failed: Add committed region, No reserved region found
-
- Closed
-
-
JDK-8317811 RunThese30M.java timed out and generated 4 core files
-
- Closed
-
-
JDK-8324829 Uniform use of synchronizations in NMT
-
- Resolved
-
- links to
-
Commit(master) openjdk/jdk/0abfa3ba
-
Review(master) openjdk/jdk/20852