On Sat, 10 Apr 2021 15:01:08 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> I'm currently rerunning tests and preparing and update - further analysis 
>> showed, that thread attachment is handled in 
>> `WebCore::StorageThread::threadEntryPoint()`:
>> 
>> https://github.com/openjdk/jfx/blob/808b1078f762a923bd5e74298daffeb88ed108c2/modules/javafx.web/src/main/native/Source/WebKitLegacy/Storage/StorageThread.cpp#L76-L87
>> 
>> The analysis was triggered by a request from @neilcsmith-net on the netbeans 
>> mailing list. He pointed out, that the fault should have happened earlier if 
>> the the thread indeed was not attached. In that case  `GetEnv` is required 
>> to return `NULL`. From the 
>> [doc](https://docs.oracle.com/en/java/javase/11/docs/specs/jni/invocation.html#getenv):
>> 
>>> If the current thread is not attached to the VM, sets *env to NULL, and 
>>> returns JNI_EDETACHED. If the specified version is not supported, sets *env 
>>> to NULL, and returns JNI_EVERSION. Otherwise, sets *env to the appropriate 
>>> interface, and returns JNI_OK.
>
> That's good since it will simplify the fix to the root cause, which is that 
> looking up the class fails depending on the ClassLoader used to load the 
> JavaFX modules.

I understand the crash would be at a different point, but it would still be a 
crash, I think? That is, if the method handlers are correctly registered via 
the OnLoad function, and later a new native thread tries to access a function 
that is not yet attached, that will still crash, I believe. (at least, the 
GetEnv will return NULL and that result is used later).
So while the 2 issues are not related, I think there are really 2 issues.

-------------

PR: https://git.openjdk.java.net/jfx/pull/458

Reply via email to