mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 17:44:40 +02:00
8268773: Improvements related to: Failed to start thread - pthread_create failed (EAGAIN)
Reviewed-by: stuefe, iklam
This commit is contained in:
parent
ea77ef8348
commit
e35005d5ce
8 changed files with 75 additions and 29 deletions
|
@ -863,16 +863,21 @@ bool os::create_thread(Thread* thread, ThreadType thr_type,
|
|||
ThreadState state;
|
||||
|
||||
{
|
||||
ResourceMark rm;
|
||||
pthread_t tid;
|
||||
int ret = pthread_create(&tid, &attr, (void* (*)(void*)) thread_native_entry, thread);
|
||||
int ret = 0;
|
||||
int limit = 3;
|
||||
do {
|
||||
ret = pthread_create(&tid, &attr, (void* (*)(void*)) thread_native_entry, thread);
|
||||
} while (ret == EAGAIN && limit-- > 0);
|
||||
|
||||
char buf[64];
|
||||
if (ret == 0) {
|
||||
log_info(os, thread)("Thread started (pthread id: " UINTX_FORMAT ", attributes: %s). ",
|
||||
(uintx) tid, os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
|
||||
log_info(os, thread)("Thread \"%s\" started (pthread id: " UINTX_FORMAT ", attributes: %s). ",
|
||||
thread->name(), (uintx) tid, os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
|
||||
} 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_warning(os, thread)("Failed to start thread \"%s\" - pthread_create failed (%s) for attributes: %s.",
|
||||
thread->name(), 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());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue