[foreign-memaccess+abi] RFR: 8294986: Possible mismatched acquire/release in binding specializer
Jorn Vernee
jvernee at openjdk.org
Tue Oct 11 15:40:18 UTC 2022
On Tue, 11 Oct 2022 14:47:31 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> We acquire sessions of address parameters before a downcall, and release them afterwards. However, if acquire fails with an exception, we still call release in the finally block.
>
> Fixing this is a simple case of switching 2 lines: when acquire fails, we don't store the session in a local, and so the cleanup in the finally block will not call release on it either.
>
> For testing, I doesn't seem possible to make this bug result in an error with the current code. So, I've added an assert to the implementation that checks whether release was called too many times.
I used an assert instead of an explicit exception since this is a case that should never happen in a sane implementation, and didn't want to introduce a performance penalty to the code for the common case where someone just has a confined session that is closed. Since the assert condition always does a volatile read in that case.
-------------
PR: https://git.openjdk.org/panama-foreign/pull/739
More information about the panama-dev
mailing list