--- old/src/share/vm/utilities/vmError.cpp 2015-03-15 15:50:10.508059246 -0700 +++ new/src/share/vm/utilities/vmError.cpp 2015-03-15 15:50:10.395053601 -0700 @@ -214,7 +214,7 @@ out->print_raw_cr("#"); } -bool VMError::coredump_status; +bool VMError::coredump_status = true; // presume we can dump core file first char VMError::coredump_message[O_BUFLEN]; void VMError::report_coredump_status(const char* message, bool status) { @@ -505,10 +505,14 @@ } STEP(63, "(printing core file information)") st->print("# "); - if (coredump_status) { - st->print("Core dump written. Default location: %s", coredump_message); + if (CreateCoredumpOnCrash) { + if (coredump_status) { + st->print("Core dump written. Default location: %s", coredump_message); + } else { + st->print("Failed to write core dump. %s", coredump_message); + } } else { - st->print("Failed to write core dump. %s", coredump_message); + st->print("CreateCoredumpOnCrash turned off, no core file dumped"); } st->cr(); st->print_cr("#"); @@ -898,7 +902,7 @@ static bool transmit_report_done = false; // done error reporting if (SuppressFatalErrorMessage) { - os::abort(); + os::abort(CreateCoredumpOnCrash); } jlong mytid = os::current_thread_id(); if (first_error == NULL && @@ -916,8 +920,8 @@ ShowMessageBoxOnError = false; } - // Write a minidump on Windows, check core dump limits on Linux/Solaris - os::check_or_create_dump(_siginfo, _context, buffer, sizeof(buffer)); + // check core dump limits on Linux/Solaris, nothing on Windows + os::check_create_dump_limit(_siginfo, _context, buffer, sizeof(buffer)); // reset signal handlers or exception filter; make sure recursive crashes // are handled properly. @@ -1088,7 +1092,7 @@ if (!skip_os_abort) { skip_os_abort = true; bool dump_core = should_report_bug(first_error->_id); - os::abort(dump_core); + os::abort(dump_core && CreateCoredumpOnCrash, _siginfo, _context); } // if os::abort() doesn't abort, try os::die();