see e.g. VirtualMemoryTracker::add_reserved_region
While working onJDK-8330174, I get this:
```
1 #
2 # A fatal error has been detected by the Java Runtime Environment:
3 #
4 # Internal Error (/shared/projects/openjdk/jdk-jdk/source/src/hotspot/share/runtime/mutex.cpp:457), pid=363333, tid=363334
5 # assert(false) failed: Attempting to acquire lock tty_lock/tty out of order with lock NmtVirtualMemory_lock/service-4 -- possible deadlock
6 #
7 # JRE version: (25.0) (slowdebug build )
8 # Java VM: OpenJDK 64-Bit Server VM (slowdebug 25-internal-adhoc.thomas.source, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
9 # Problematic frame:
10 # V [libjvm.so+0x13c54eb] Mutex::check_rank(Thread*)+0x3c1
11 #
12 # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /shared/projects/openjdk/jdk-jdk/output-slowdebug/core.363333)
13 #
14 #
15
16 --------------- S U M M A R Y ------------
17
18 Command Line: -Xshare:on -XX:+UseNewCode -Xlog:metaspace* -Xlog:cds+map
19
20 Host: starfish, AMD Ryzen 9 3900X 12-Core Processor, 24 cores, 62G, Ubuntu 20.04.6 LTS
21 Time: Thu Feb 13 09:26:33 2025 CET elapsed time: 0.062652 seconds (0d 0h 0m 0s)
22
23 --------------- T H R E A D ---------------
24
25 Current thread (0x00007f8b1c02d480): JavaThread "Unknown thread" [_thread_in_vm, id=363334, stack(0x00007f8b20866000,0x00007f8b20967000) (1028K)]
26
27 Stack: [0x00007f8b20866000,0x00007f8b20967000], sp=0x00007f8b20962900, free space=1010k
28 Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
29 V [libjvm.so+0x13c54eb] Mutex::check_rank(Thread*)+0x3c1 (mutex.cpp:457)
30 V [libjvm.so+0x13c4219] Mutex::lock_without_safepoint_check(Thread*)+0x99 (mutex.cpp:145)
31 V [libjvm.so+0x13c4277] Mutex::lock_without_safepoint_check()+0x27 (mutex.cpp:153)
32 V [libjvm.so+0x145e5d9] defaultStream::hold(long)+0xc3 (ostream.cpp:871)
33 V [libjvm.so+0x145e6c6] defaultStream::write(char const*, unsigned long)+0x34 (ostream.cpp:899)
34 V [libjvm.so+0x145c047] outputStream::do_vsnprintf_and_write_with_automatic_buffer(char const*, __va_list_tag*, bool)+0xa7 (ostream.cpp:144)
35 V [libjvm.so+0x145c153] outputStream::do_vsnprintf_and_write(char const*, __va_list_tag*, bool)+0x7f (ostream.cpp:160)
36 V [libjvm.so+0x145c2b2] outputStream::print_cr(char const*, ...)+0xac (ostream.cpp:174)
37 V [libjvm.so+0x18ab25d] VirtualMemoryTracker::add_reserved_region(unsigned char*, unsigned long, NativeCallStack const&, MemTag)+0x70d (virtualMemoryTracker.cpp:400)
38 V [libjvm.so+0x144047e] MemTracker::record_virtual_memory_reserve_and_commit(void*, unsigned long, NativeCallStack const&, MemTag)+0x59 (memTracker.hpp:160)
39 V [libjvm.so+0x143ec48] os::map_memory(int, char const*, unsigned long, char*, unsigned long, bool, bool, MemTag)+0xae (os.cpp:2303)
40 V [libjvm.so+0xcd1119] map_memory(int, char const*, unsigned long, char*, unsigned long, bool, bool, MemTag)+0x78 (filemap.cpp:1782)
41 V [libjvm.so+0xcd1bb1] FileMapInfo::map_region(int, long, char*, ReservedSpace)+0x35d (filemap.cpp:1931)
42 V [libjvm.so+0xcd13db] FileMapInfo::map_regions(int*, int, char*, ReservedSpace)+0xb9 (filemap.cpp:1838)
43 V [libjvm.so+0x13787d8] MetaspaceShared::map_archive(FileMapInfo*, char*, ReservedSpace)+0x124 (metaspaceShared.cpp:1651)
44 V [libjvm.so+0x13773f3] MetaspaceShared::map_archives(FileMapInfo*, FileMapInfo*, bool)+0x61d (metaspaceShared.cpp:1302)
45 V [libjvm.so+0x137697f] MetaspaceShared::initialize_runtime_shared_and_meta_spaces()+0xdb (metaspaceShared.cpp:1122)
46 V [libjvm.so+0x136a4a4] Metaspace::global_initialize()+0xce (metaspace.cpp:739)
47 V [libjvm.so+0x1848f81] universe_init()+0xd7 (universe.cpp:887)
48 V [libjvm.so+0xea1c62] init_globals()+0x60 (init.cpp:132)
49 V [libjvm.so+0x1820ff4] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3fe (threads.cpp:576)
50 V [libjvm.so+0xff8c19] JNI_CreateJavaVM_inner(JavaVM_**, void**, void*)+0xbb (jni.cpp:3588)
51 V [libjvm.so+0xff9081] JNI_CreateJavaVM+0x36 (jni.cpp:3679)
52 C [libjli.so+0x8d8f] InitializeJVM+0x141 (java.c:1499)
53 C [libjli.so+0x5882] JavaMain+0xec (java.c:494)
54 C [libjli.so+0xc808] ThreadJavaMain+0x2b (java_md.c:649)
```
Okay, its a rank problem, but NMT should really never use tty to begin with. It should consistently use UL (log_error or log_warning).
While working on
```
1 #
2 # A fatal error has been detected by the Java Runtime Environment:
3 #
4 # Internal Error (/shared/projects/openjdk/jdk-jdk/source/src/hotspot/share/runtime/mutex.cpp:457), pid=363333, tid=363334
5 # assert(false) failed: Attempting to acquire lock tty_lock/tty out of order with lock NmtVirtualMemory_lock/service-4 -- possible deadlock
6 #
7 # JRE version: (25.0) (slowdebug build )
8 # Java VM: OpenJDK 64-Bit Server VM (slowdebug 25-internal-adhoc.thomas.source, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
9 # Problematic frame:
10 # V [libjvm.so+0x13c54eb] Mutex::check_rank(Thread*)+0x3c1
11 #
12 # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /shared/projects/openjdk/jdk-jdk/output-slowdebug/core.363333)
13 #
14 #
15
16 --------------- S U M M A R Y ------------
17
18 Command Line: -Xshare:on -XX:+UseNewCode -Xlog:metaspace* -Xlog:cds+map
19
20 Host: starfish, AMD Ryzen 9 3900X 12-Core Processor, 24 cores, 62G, Ubuntu 20.04.6 LTS
21 Time: Thu Feb 13 09:26:33 2025 CET elapsed time: 0.062652 seconds (0d 0h 0m 0s)
22
23 --------------- T H R E A D ---------------
24
25 Current thread (0x00007f8b1c02d480): JavaThread "Unknown thread" [_thread_in_vm, id=363334, stack(0x00007f8b20866000,0x00007f8b20967000) (1028K)]
26
27 Stack: [0x00007f8b20866000,0x00007f8b20967000], sp=0x00007f8b20962900, free space=1010k
28 Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
29 V [libjvm.so+0x13c54eb] Mutex::check_rank(Thread*)+0x3c1 (mutex.cpp:457)
30 V [libjvm.so+0x13c4219] Mutex::lock_without_safepoint_check(Thread*)+0x99 (mutex.cpp:145)
31 V [libjvm.so+0x13c4277] Mutex::lock_without_safepoint_check()+0x27 (mutex.cpp:153)
32 V [libjvm.so+0x145e5d9] defaultStream::hold(long)+0xc3 (ostream.cpp:871)
33 V [libjvm.so+0x145e6c6] defaultStream::write(char const*, unsigned long)+0x34 (ostream.cpp:899)
34 V [libjvm.so+0x145c047] outputStream::do_vsnprintf_and_write_with_automatic_buffer(char const*, __va_list_tag*, bool)+0xa7 (ostream.cpp:144)
35 V [libjvm.so+0x145c153] outputStream::do_vsnprintf_and_write(char const*, __va_list_tag*, bool)+0x7f (ostream.cpp:160)
36 V [libjvm.so+0x145c2b2] outputStream::print_cr(char const*, ...)+0xac (ostream.cpp:174)
37 V [libjvm.so+0x18ab25d] VirtualMemoryTracker::add_reserved_region(unsigned char*, unsigned long, NativeCallStack const&, MemTag)+0x70d (virtualMemoryTracker.cpp:400)
38 V [libjvm.so+0x144047e] MemTracker::record_virtual_memory_reserve_and_commit(void*, unsigned long, NativeCallStack const&, MemTag)+0x59 (memTracker.hpp:160)
39 V [libjvm.so+0x143ec48] os::map_memory(int, char const*, unsigned long, char*, unsigned long, bool, bool, MemTag)+0xae (os.cpp:2303)
40 V [libjvm.so+0xcd1119] map_memory(int, char const*, unsigned long, char*, unsigned long, bool, bool, MemTag)+0x78 (filemap.cpp:1782)
41 V [libjvm.so+0xcd1bb1] FileMapInfo::map_region(int, long, char*, ReservedSpace)+0x35d (filemap.cpp:1931)
42 V [libjvm.so+0xcd13db] FileMapInfo::map_regions(int*, int, char*, ReservedSpace)+0xb9 (filemap.cpp:1838)
43 V [libjvm.so+0x13787d8] MetaspaceShared::map_archive(FileMapInfo*, char*, ReservedSpace)+0x124 (metaspaceShared.cpp:1651)
44 V [libjvm.so+0x13773f3] MetaspaceShared::map_archives(FileMapInfo*, FileMapInfo*, bool)+0x61d (metaspaceShared.cpp:1302)
45 V [libjvm.so+0x137697f] MetaspaceShared::initialize_runtime_shared_and_meta_spaces()+0xdb (metaspaceShared.cpp:1122)
46 V [libjvm.so+0x136a4a4] Metaspace::global_initialize()+0xce (metaspace.cpp:739)
47 V [libjvm.so+0x1848f81] universe_init()+0xd7 (universe.cpp:887)
48 V [libjvm.so+0xea1c62] init_globals()+0x60 (init.cpp:132)
49 V [libjvm.so+0x1820ff4] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3fe (threads.cpp:576)
50 V [libjvm.so+0xff8c19] JNI_CreateJavaVM_inner(JavaVM_**, void**, void*)+0xbb (jni.cpp:3588)
51 V [libjvm.so+0xff9081] JNI_CreateJavaVM+0x36 (jni.cpp:3679)
52 C [libjli.so+0x8d8f] InitializeJVM+0x141 (java.c:1499)
53 C [libjli.so+0x5882] JavaMain+0xec (java.c:494)
54 C [libjli.so+0xc808] ThreadJavaMain+0x2b (java_md.c:649)
```
Okay, its a rank problem, but NMT should really never use tty to begin with. It should consistently use UL (log_error or log_warning).