On 8/12/2015 9:26 PM, cheleswer sahu wrote:
Hi David,
Please review the code changes in updated webrev
http://cr.openjdk.java.net/~kevinw/8138745/webrev.02/

Looks good! Only one more thing I forgot to mention - no new webrev needed. When you use the testlibrary you also need to ensure it gets built, so you need to add:

jdk.test.lib.*

to your @build lines.

Thanks,
David


Regards,
Cheleswer

On 12/8/2015 4:36 AM, David Holmes wrote:
Hi Cheleswer,

Thanks. Just a few minor updates ...

On 3/12/2015 4:58 PM, cheleswer sahu wrote:
Hi,
Thanks David and Staffan for your comments. Please review the code
changes in the updated webrev below
http://cr.openjdk.java.net/~kevinw/8138745/webrev.01/

src/share/vm/runtime/globals.hpp

As I said previously this terminology:

+           "JVM aborts and produces text and binary crash files on
the "     \

should be consistent with what we already use. So I suggest:

+           "JVM aborts, producing an error log and core/mini dump, on
the "     \


In the tests either "throw new Error(...)" or "throw new
RuntimeException(...)" but don't switch between them.

test/runtime/ErrorHandling/TestExitOnOutOfMemoryError.java

  45             } catch (OutOfMemoryError err) {
  46                 throw err;
  47             }

should be:

  45             } catch (OutOfMemoryError err) {
  46                 throw new Error("OOME didn't terminate JVM!");
  47             }

---

test/runtime/ErrorHandling/TestCrashOnOutOfMemoryError.java

  50             } catch (OutOfMemoryError err) {
  51                 throw err;
  52             }

should be:

  50              } catch (OutOfMemoryError err) {
  51                  throw new Error("OOME didn't abort JVM!");
  52              }


Here:

 55         ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder("-XX:+CrashOnOutOfMemoryError",
  56                 "-Xmx64m",
TestCrashOnOutOfMemoryError.class.getName(),"throwOOME");

you also need to disable core dump generation:
-XX:-CreateCoredumpOnCrash  otherwise you may run into issues with
core dumps taking a long time to generate and the test times out.


 64         /* Actual output should look like this:

"should look _something_ like this". The actual text will depend on
the OS and its core dump processing.

Thanks,
David


Regards,
Cheleswer

On 11/26/2015 11:58 AM, David Holmes wrote:
Sorry forgot the tests ....

test/runtime/ErrorHandling/TestExitOnOutOfMemoryError.java

This test is checking that new Object[Integer.MAX_VALUE]; caused the
"Requested array size exceeds VM limit" failure _but_ it doesn't
actually do anything to verify that the VM terminated because of the
ExitOnOutOfMemory flag. I suggest:

a) augment the termination message in the VM as I suggested earlier so
that you can be sure you hit the termination code
b) check for a zero/non-zero return code as appropriate
c) Add: throw new Error("OOME was not triggered"); after line 41.
d) Put a try/catch(OOME) around the allocation and throw an Error if
you get to the catch block

That way we will get a test failure when Arrays 2.0 allows such
massive arrays to be created :)

Similar considerations for TestCrashOnOutOfMemoryError.java, but you
also need to disable core dump generation.

David
-----

On 26/11/2015 3:43 PM, David Holmes wrote:
Hi,

On 25/11/2015 10:40 PM, cheleswer sahu wrote:
Hi,

Please review the code changes for
"https://bugs.openjdk.java.net/browse/JDK-8138745";.
Web review link:
<http://cr.openjdk.java.net/%7Ekevinw/8138745/webrev.00/>http://cr.openjdk.java.net/~kevinw/8138745/webrev.00/




Enhancement Brief:
ExitOnOutOfMemoryError: When user enable this option, the JVM
exits on
the first occurrence of an out-of-memory error. It can be used if
user
prefer restarting an instance of the JVM rather than handling out of
memory errors.

CrashOnOutOfMemoryError: If this option is enabled, when an
out-of-memory error occurs, the JVM crashes and produces text and
binary
crash files.

The term "crash" is not very appropriate - crashes are bad things.
Abort
may have been a better choice.

For more details please refer http://ccc.us.oracle.com/8138745

This is not accessible outside of Oracle.

A few minor comments:

src/share/vm/runtime/globals.hpp

+           "JVM crashes and produces text and binary crash files")

Terminology should be consistent with other options that control core
dump. Should also say "on first occurrence of an out-of-memory error".

src/share/vm/utilities/debug.cpp:

  308     if (CrashOnOutOfMemoryError) {
  309       tty->print_cr("java.lang.OutOfMemoryError: %s", message);
  310       fatal("OutOfMemory encountered: %s", message);
  311     }

don't really need the tty->print when using the fatal. Though you may
want to use the j.l.OOME form of the message for consistency. Might
also
be useful for both Crash and Exit to include in the logged messages
the
fact that these flags were involved - something like:

"Terminating due to java.lang.OutOfMemoryError: %s"
"Aborting due to java.lang.OutOfMemoryError: %s"

Thanks,
David
-----


Regards,
Cheleswer



Reply via email to