8220570: Additonal trace when native thread creation fails
Summary: Added additonal trace when native thread creation fails
Reviewed-by: dholmes, goetz
--- a/src/hotspot/os/aix/os_aix.cpp Tue Mar 26 07:24:26 2019 -0400
+++ b/src/hotspot/os/aix/os_aix.cpp Fri Mar 22 04:47:02 2019 -0700
@@ -37,6 +37,7 @@
#include "compiler/compileBroker.hpp"
#include "interpreter/interpreter.hpp"
#include "logging/log.hpp"
+#include "logging/logStream.hpp"
#include "libo4.hpp"
#include "libperfstat_aix.hpp"
#include "libodm_aix.hpp"
@@ -923,6 +924,11 @@
char buf[64];
log_warning(os, thread)("Failed to start thread - pthread_create failed (%d=%s) for attributes: %s.",
ret, os::errno_name(ret), os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
+ // Log some OS information which might explain why creating the thread failed.
+ log_info(os, thread)("Number of threads approx. running in the VM: %d", Threads::number_of_threads());
+ LogStream st(Log(os, thread)::info());
+ os::Posix::print_rlimit_info(&st);
+ os::print_memory_info(&st);
}
pthread_attr_destroy(&attr);
--- a/src/hotspot/os/bsd/os_bsd.cpp Tue Mar 26 07:24:26 2019 -0400
+++ b/src/hotspot/os/bsd/os_bsd.cpp Fri Mar 22 04:47:02 2019 -0700
@@ -33,6 +33,7 @@
#include "compiler/disassembler.hpp"
#include "interpreter/interpreter.hpp"
#include "logging/log.hpp"
+#include "logging/logStream.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/filemap.hpp"
#include "oops/oop.inline.hpp"
@@ -743,6 +744,11 @@
} else {
log_warning(os, thread)("Failed to start thread - pthread_create failed (%s) for attributes: %s.",
os::errno_name(ret), os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
+ // Log some OS information which might explain why creating the thread failed.
+ log_info(os, thread)("Number of threads approx. running in the VM: %d", Threads::number_of_threads());
+ LogStream st(Log(os, thread)::info());
+ os::Posix::print_rlimit_info(&st);
+ os::print_memory_info(&st);
}
pthread_attr_destroy(&attr);
--- a/src/hotspot/os/linux/os_linux.cpp Tue Mar 26 07:24:26 2019 -0400
+++ b/src/hotspot/os/linux/os_linux.cpp Fri Mar 22 04:47:02 2019 -0700
@@ -780,6 +780,13 @@
} else {
log_warning(os, thread)("Failed to start thread - pthread_create failed (%s) for attributes: %s.",
os::errno_name(ret), os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
+ // Log some OS information which might explain why creating the thread failed.
+ log_info(os, thread)("Number of threads approx. running in the VM: %d", Threads::number_of_threads());
+ LogStream st(Log(os, thread)::info());
+ os::Posix::print_rlimit_info(&st);
+ os::print_memory_info(&st);
+ os::Linux::print_proc_sys_info(&st);
+ os::Linux::print_container_info(&st);
}
pthread_attr_destroy(&attr);
--- a/src/hotspot/os/solaris/os_solaris.cpp Tue Mar 26 07:24:26 2019 -0400
+++ b/src/hotspot/os/solaris/os_solaris.cpp Fri Mar 22 04:47:02 2019 -0700
@@ -33,6 +33,7 @@
#include "compiler/disassembler.hpp"
#include "interpreter/interpreter.hpp"
#include "logging/log.hpp"
+#include "logging/logStream.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/filemap.hpp"
#include "oops/oop.inline.hpp"
@@ -992,6 +993,11 @@
} else {
log_warning(os, thread)("Failed to start thread - thr_create failed (%s) for attributes: %s.",
os::errno_name(status), describe_thr_create_attributes(buf, sizeof(buf), stack_size, flags));
+ // Log some OS information which might explain why creating the thread failed.
+ log_info(os, thread)("Number of threads approx. running in the VM: %d", Threads::number_of_threads());
+ LogStream st(Log(os, thread)::info());
+ os::Posix::print_rlimit_info(&st);
+ os::print_memory_info(&st);
}
if (status != 0) {
--- a/src/hotspot/os/windows/os_windows.cpp Tue Mar 26 07:24:26 2019 -0400
+++ b/src/hotspot/os/windows/os_windows.cpp Fri Mar 22 04:47:02 2019 -0700
@@ -36,6 +36,7 @@
#include "compiler/disassembler.hpp"
#include "interpreter/interpreter.hpp"
#include "logging/log.hpp"
+#include "logging/logStream.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/filemap.hpp"
#include "oops/oop.inline.hpp"
@@ -669,6 +670,10 @@
} else {
log_warning(os, thread)("Failed to start thread - _beginthreadex failed (%s) for attributes: %s.",
os::errno_name(errno), describe_beginthreadex_attributes(buf, sizeof(buf), stack_size, initflag));
+ // Log some OS information which might explain why creating the thread failed.
+ log_info(os, thread)("Number of threads approx. running in the VM: %d", Threads::number_of_threads());
+ LogStream st(Log(os, thread)::info());
+ os::print_memory_info(&st);
}
if (thread_handle == NULL) {