To prevent threads from waking up at improper time and accessing data that
have already been deallocated, we currently suspend almost all threads during
VM shutdown. This approach may cause a thread to be suspended while it is
holding a system lock (e.g malloc lock) which can then cause VM hangs.
This has been a major reliability issue on Linux and Windows (both platforms
use multiple locks in malloc(), SuspendCheckerThread cannot detect potential
hangs.) and will be an issue for using 3rd party allocator on Solaris
(see 4451800).
Unlike safepoint, thread being suspended at shutdown will be suspended forever,
so it is important VM shutdown not doing forced suspension.
have already been deallocated, we currently suspend almost all threads during
VM shutdown. This approach may cause a thread to be suspended while it is
holding a system lock (e.g malloc lock) which can then cause VM hangs.
This has been a major reliability issue on Linux and Windows (both platforms
use multiple locks in malloc(), SuspendCheckerThread cannot detect potential
hangs.) and will be an issue for using 3rd party allocator on Solaris
(see 4451800).
Unlike safepoint, thread being suspended at shutdown will be suspended forever,
so it is important VM shutdown not doing forced suspension.
- relates to
-
JDK-4873131 JVM hangs up with C++ std lib because of mutex deadlock in 1.3.1_03/1.4.0_0X
- Closed
-
JDK-4891959 JVM carsh only with java_g in 1.3.1_09 for CaffeineMark3.0
- Closed
-
JDK-4905541 VolanoMark test hang with 1.3.1_10
- Closed
-
JDK-6205603 startup regression in 1.3.1_10
- Closed
-
JDK-4666430 no forced suspension in JVMPI/JVMDI/JVM_SuspendThread
- Closed