mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 06:14:49 +02:00
6583275: Hotspot crash in vm_perform_shutdown_actions due to uninitialized TLS during out of memory handling
Call get_thread_slow() in vm_perform_shutdown actions and add null check. Reviewed-by: kvn, dholmes, jcoomes
This commit is contained in:
parent
dec384330b
commit
1f42cca35e
1 changed files with 5 additions and 4 deletions
|
@ -515,8 +515,8 @@ void before_exit(JavaThread * thread) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void vm_exit(int code) {
|
void vm_exit(int code) {
|
||||||
Thread* thread = ThreadLocalStorage::thread_index() == -1 ? NULL
|
Thread* thread = ThreadLocalStorage::is_initialized() ?
|
||||||
: ThreadLocalStorage::get_thread_slow();
|
ThreadLocalStorage::get_thread_slow() : NULL;
|
||||||
if (thread == NULL) {
|
if (thread == NULL) {
|
||||||
// we have serious problems -- just exit
|
// we have serious problems -- just exit
|
||||||
vm_direct_exit(code);
|
vm_direct_exit(code);
|
||||||
|
@ -553,8 +553,9 @@ void vm_perform_shutdown_actions() {
|
||||||
// Calling 'exit_globals()' will disable thread-local-storage and cause all
|
// Calling 'exit_globals()' will disable thread-local-storage and cause all
|
||||||
// kinds of assertions to trigger in debug mode.
|
// kinds of assertions to trigger in debug mode.
|
||||||
if (is_init_completed()) {
|
if (is_init_completed()) {
|
||||||
Thread* thread = Thread::current();
|
Thread* thread = ThreadLocalStorage::is_initialized() ?
|
||||||
if (thread->is_Java_thread()) {
|
ThreadLocalStorage::get_thread_slow() : NULL;
|
||||||
|
if (thread != NULL && thread->is_Java_thread()) {
|
||||||
// We are leaving the VM, set state to native (in case any OS exit
|
// We are leaving the VM, set state to native (in case any OS exit
|
||||||
// handlers call back to the VM)
|
// handlers call back to the VM)
|
||||||
JavaThread* jt = (JavaThread*)thread;
|
JavaThread* jt = (JavaThread*)thread;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue