< prev index next >
src/share/vm/gc/shared/workerManager.hpp
Print this page
rev 11457 : 8159073: : Error handling incomplete when creating GC threads lazily
Reviewed-by: ehelin, drwhite
rev 11458 : code_review1: add logging for failures
rev 11461 : [mq]: code_review2
*** 53,77 ****
os::ThreadType worker_type,
bool initializing) {
uint start = created_workers;
uint end = MIN2(active_workers, total_workers);
for (uint worker_id = start; worker_id < end; worker_id += 1) {
! WorkerThread* new_worker = holder->install_worker(worker_id);
! assert(new_worker != NULL, "Failed to allocate GangWorker");
if (new_worker == NULL || !os::create_thread(new_worker, worker_type)) {
! if(initializing) {
! vm_exit_out_of_memory(0, OOM_MALLOC_ERROR,
! "Cannot create worker GC thread. Out of system resources.");
}
}
created_workers++;
os::start_thread(new_worker);
}
! log_trace(gc, task)("AdaptiveSizePolicy::add_workers() : "
! "active_workers: %u created_workers: %u",
! active_workers, created_workers);
return created_workers;
}
};
#endif // SHARE_VM_GC_SHARED_WORKERMANAGER_HPP
--- 53,84 ----
os::ThreadType worker_type,
bool initializing) {
uint start = created_workers;
uint end = MIN2(active_workers, total_workers);
for (uint worker_id = start; worker_id < end; worker_id += 1) {
! WorkerThread* new_worker = NULL;
! if (initializing || !InjectGCWorkerCreationFailure) {
! new_worker = holder->install_worker(worker_id);
! }
if (new_worker == NULL || !os::create_thread(new_worker, worker_type)) {
! log_trace(gc, task)("WorkerManager::add_workers() : "
! "creation failed due to failed allocation of native %s",
! new_worker == NULL ? "memory" : "thread");
! if (new_worker != NULL) {
! delete new_worker;
! }
! if (initializing) {
! vm_exit_out_of_memory(0, OOM_MALLOC_ERROR, "Cannot create worker GC thread. Out of system resources.");
}
+ break;
}
created_workers++;
os::start_thread(new_worker);
}
! log_trace(gc, task)("WorkerManager::add_workers() : "
! "created_workers: %u", created_workers);
return created_workers;
}
};
#endif // SHARE_VM_GC_SHARED_WORKERMANAGER_HPP
< prev index next >