< 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

*** 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 >