[aarch64-port-dev ] RFR(xs): Aarch64: ReservedStackAccess may leave stack guard in inconsistent state
dean.long at oracle.com
dean.long at oracle.com
Wed Dec 19 19:14:59 UTC 2018
Is there a bug ID for this? It's not clear to me which repo(s) this is
targeted
for.
The aarch64 part looks good.
The shared part could be simplified. There are only 4 guard states, so
checking
for != to 3 of them is the same as checking for == to the one that is
allowed.
Also,
2576 assert(_stack_guard_state != stack_guard_unused, "must be using
guard pages.");
2577 assert(_stack_guard_state != stack_guard_reserved_disabled,
"already disabled");
2578 assert(_stack_guard_state !=
stack_guard_yellow_reserved_disabled, "loosing information");
2579
2580 // Simply return if called for a thread that does not use guard
pages.
2581 if (_stack_guard_state == stack_guard_unused) return;
2582
2583 // Already disabled together with yellow pages.
2584 if (_stack_guard_state == stack_guard_yellow_reserved_disabled)
return;
the if-returns don't seems very useful after the asserts.
dl
On 12/19/18 6:08 AM, Andrey Petushkov wrote:
> Hi All,
>
> Please review small fix for for the following problem: during execution of
> ReservedStackAccess annotated method it might happen that reserved pages
> are reguarded while yellow pages left unguarded. At the same time the state
> of stack guard is recorded as fully protected (stack_guard_enabled).
> Subsequent execution of ReservedStackAccess annotated method then may lead
> to VM crash instead of mere StackOverflowError.
> Reproduced with ReservedStackTestCompiler jtreg test on aarch32-jdk11 port
> codebase. The bug seem to be apparent and exists in aarch64-port as well,
> hence the review request.
> The actual fix is in aarch64-specific code but the shared code is changed
> as well to help to catch such bugs earlier in the future
>
> the link http://cr.openjdk.java.net/~apetushkov/ReservedStackAccess/
>
> Thanks,
> Andrey
More information about the aarch64-port-dev
mailing list