src/os/bsd/vm/os_bsd.cpp

Print this page

        

*** 4695,4704 **** --- 4695,4734 ---- n = MIN2(n, (int)bufferSize); return n; } + // Check core dump limit and report possible place where core can be found + void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) { + int n; + struct rlimit rlim; + bool success; + + n = get_core_path(buffer, bufferSize); + + if (getrlimit(RLIMIT_CORE, &rlim) != 0) { + jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (may not exist)", current_process_id()); + success = true; + } else { + switch(rlim.rlim_cur) { + case RLIM_INFINITY: + jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d", current_process_id()); + success = true; + break; + case 0: + jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again"); + success = false; + break; + default: + jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", current_process_id(), (unsigned long)(rlim.rlim_cur >> 10)); + success = true; + break; + } + } + VMError::report_coredump_status(buffer, success); + } + #ifndef PRODUCT void TestReserveMemorySpecial_test() { // No tests available for this platform } #endif