RFR(S): Fix regression test for 8012015 (Use PROT_NONE when reserving memory)
Mikael Vidstedt
mikael.vidstedt at oracle.com
Thu May 16 09:39:26 PDT 2013
Please review the below change:
Webrev: http://cr.openjdk.java.net/~mikael/webrevs/8013726/webrev.03/webrev/
Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8013726
Background (see bug report for some additional information):
When changing the protection for reserved memory [1][2] I also added a
regression test. The test is supposed to reserve a memory range and
explicitly provoke a crash by accessing that memory. Unfortunately the
test is severely broken and does not work on all platforms. Specifically
it has the following problems:
* It tries to reserve a 4kb memory range, which is not always allowed -
os::vm_allocation_granularity() is the memory allocation granularity.
For example, on my windows machine the granularity is 64kb. This
triggers the assert in the bug report.
* The test also uses Unsafe to do the memory access, but signals raised
by Unsafe operations are handled slightly differently from normal memory
accesses. Specifically, a SIGBUS signal is translated into a Java
exception. Furthermore, on OSX a memory access in reserved memory raises
a SIGBUS whereas on other platforms (Linux, Solaris) it is a SIGSEGV.
About the change:
The change resolves the assert by using os::vm_allocation_granularity()
when specifying the size of the reserved memory.
In order to avoid the Unsafe specific behavior in combination with the
platform specific signal raised the memory access has also been moved
into the native whitebox code. The function now both does the memory
reservation and touches the memory and it has been renamed to reflect
that. One alternative to that would be to have a separate whitebox
function to read from a memory address, but that did not immediately
make sense. Future tests may want to revisit that.
Thanks,
Mikael
[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8012015
[2] http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/f32b6c267d2e
More information about the hotspot-runtime-dev
mailing list