< prev index next >

src/share/vm/runtime/thread.cpp

Print this page
rev 13436 : 8186286: [BSD] Primary thread's stack size is reported incorrectly
Reviewed-by: shade, stuefe


2497   MutexLockerEx ml(SR_lock(), Mutex::_no_safepoint_check_flag);
2498 
2499   clear_external_suspend();
2500 
2501   if (is_ext_suspended()) {
2502     clear_ext_suspended();
2503     SR_lock()->notify_all();
2504   }
2505 }
2506 
2507 size_t JavaThread::_stack_red_zone_size = 0;
2508 size_t JavaThread::_stack_yellow_zone_size = 0;
2509 size_t JavaThread::_stack_reserved_zone_size = 0;
2510 size_t JavaThread::_stack_shadow_zone_size = 0;
2511 
2512 void JavaThread::create_stack_guard_pages() {
2513   if (!os::uses_stack_guard_pages() || _stack_guard_state != stack_guard_unused) { return; }
2514   address low_addr = stack_end();
2515   size_t len = stack_guard_zone_size();
2516 



2517   int must_commit = os::must_commit_stack_guard_pages();
2518   // warning("Guarding at " PTR_FORMAT " for len " SIZE_FORMAT "\n", low_addr, len);
2519 
2520   if (must_commit && !os::create_stack_guard_pages((char *) low_addr, len)) {
2521     log_warning(os, thread)("Attempt to allocate stack guard pages failed.");
2522     return;
2523   }
2524 
2525   if (os::guard_memory((char *) low_addr, len)) {
2526     _stack_guard_state = stack_guard_enabled;
2527   } else {
2528     log_warning(os, thread)("Attempt to protect stack guard pages failed ("
2529       PTR_FORMAT "-" PTR_FORMAT ").", p2i(low_addr), p2i(low_addr + len));
2530     if (os::uncommit_memory((char *) low_addr, len)) {
2531       log_warning(os, thread)("Attempt to deallocate stack guard pages failed.");
2532     }
2533     return;
2534   }
2535 
2536   log_debug(os, thread)("Thread " UINTX_FORMAT " stack guard pages activated: "




2497   MutexLockerEx ml(SR_lock(), Mutex::_no_safepoint_check_flag);
2498 
2499   clear_external_suspend();
2500 
2501   if (is_ext_suspended()) {
2502     clear_ext_suspended();
2503     SR_lock()->notify_all();
2504   }
2505 }
2506 
2507 size_t JavaThread::_stack_red_zone_size = 0;
2508 size_t JavaThread::_stack_yellow_zone_size = 0;
2509 size_t JavaThread::_stack_reserved_zone_size = 0;
2510 size_t JavaThread::_stack_shadow_zone_size = 0;
2511 
2512 void JavaThread::create_stack_guard_pages() {
2513   if (!os::uses_stack_guard_pages() || _stack_guard_state != stack_guard_unused) { return; }
2514   address low_addr = stack_end();
2515   size_t len = stack_guard_zone_size();
2516 
2517   assert(is_aligned(low_addr, os::vm_page_size()), "Stack base should be the start of a page");
2518   assert(is_aligned(len, os::vm_page_size()), "Stack size should be a multiple of page size");
2519 
2520   int must_commit = os::must_commit_stack_guard_pages();
2521   // warning("Guarding at " PTR_FORMAT " for len " SIZE_FORMAT "\n", low_addr, len);
2522 
2523   if (must_commit && !os::create_stack_guard_pages((char *) low_addr, len)) {
2524     log_warning(os, thread)("Attempt to allocate stack guard pages failed.");
2525     return;
2526   }
2527 
2528   if (os::guard_memory((char *) low_addr, len)) {
2529     _stack_guard_state = stack_guard_enabled;
2530   } else {
2531     log_warning(os, thread)("Attempt to protect stack guard pages failed ("
2532       PTR_FORMAT "-" PTR_FORMAT ").", p2i(low_addr), p2i(low_addr + len));
2533     if (os::uncommit_memory((char *) low_addr, len)) {
2534       log_warning(os, thread)("Attempt to deallocate stack guard pages failed.");
2535     }
2536     return;
2537   }
2538 
2539   log_debug(os, thread)("Thread " UINTX_FORMAT " stack guard pages activated: "


< prev index next >