On Mon, 23 Oct 2023 13:58:27 GMT, Jorn Vernee <[email protected]> wrote:
> Explicitly handle UpcallStub allocation failures by terminating. We currently
> might try to use the returned `nullptr` which would fail sooner or later.
> This patch just makes the termination explicit.
I find it pretty weird to terminate the VM if we cannot allocate upcall stub.
Does this mean the user code could actually terminate the VM on this `fatal`?
Unit test suggests so.
Can the VM code actually handle things without upcall stub present, if e.g.
memory is exhausted?
src/hotspot/share/code/codeBlob.cpp line 761:
> 759: MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
> 760: blob = new (size) UpcallStub(name, cb, size, receiver,
> frame_data_offset);
> 761: if (blob == nullptr) {
I think it would be safer to call into `fatal` without having `CodeCache_lock`
held. Move it out of `MutexLocker` scope?
-------------
PR Review: https://git.openjdk.org/jdk/pull/16311#pullrequestreview-1696785943
PR Review Comment: https://git.openjdk.org/jdk/pull/16311#discussion_r1371421151