RFR: 10: 8177522: -XX:OnOutOfMemoryError does not work if supplied twice on windows
David Holmes
david.holmes at oracle.com
Thu Apr 27 07:39:42 UTC 2017
Hi Vladimir,
Thanks for fixing this.
On 26/04/2017 7:58 PM, Vladimir Kempik wrote:
> Hello
>
> Please review this fix for bug JDK-8177522
> <https://bugs.openjdk.java.net/browse/JDK-8177522>
>
> The issue is windows only.
>
> When two OnOutOfMemoryError options are passed to java, they are
> combined using '\n' as separator.
>
> But when OnError parses the string, it only knows ';' as separator of
> commands.
>
> On nix systems it works fine because the command with '\n' in it are
> passed to shell where it executed fine.
>
> With this patch I'm making windows routine to behave similary to nix,
> passing command to cmd.exe for execution, I just have to replace all
> '\n' with '&'.
Overall this approach looks good to me.
os_windows.cpp:
+ char * cmd_prefix = "cmd /C ";
Should that be cmd.exe as in vmError.cpp?
Two nits:
+ // now replace all '\n' with '&'
Comment should be indented 2 spaces.
+ while ((substring = strchr (substring, '\n')) != NULL) {
Remove space after strchr.
---
vmError.cpp:
I'm wondering though, do we need to modify the vmError code given we
will add the "cmd.exe /C" prefix in fork_and_exec anyway?
---
test/runtime/ErrorHandling/TestOnOutOfMemoryError.java
The test should test both a single -XX:OnOutOfMemoryError, and multiple
ones.
Thanks,
David
-----
> Such workaround is needed to not break compatibility with existing systems.
>
> Testing: jprt, included testcase.
>
> Webrev - http://cr.openjdk.java.net/~vkempik/8177522/webrev.00/
>
> Bug - https://bugs.openjdk.java.net/browse/JDK-8177522
>
> Thanks, Vladimir
>
More information about the hotspot-runtime-dev
mailing list