[foreign] RFR 8226250: Calling callback from different native threads causes a VM crash

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon Jun 17 17:14:20 UTC 2019


Hi,
Under JNI, it is user responsibility to attach native threads to the VM 
using attachCurrentThread/detachCurrentThread.

Panama doesn't do this and, as a result, if native code creates a new 
thread and uses it to call a Java callback, an hard crash occurs.

This patch adds a call to AttachCurrentThreadAsDaemon before calling the 
Java callback, only if the native thread has no associated Java thread.

The AttachCurrentThreadAsDaemon allows the VM to be shutdown w/o waiting 
for native threads to complete, which is, I think the semantics we want.

We don't call the dual detach method for two reasons:

* re-attaching the same thread over and over can be expensive

* calling detach after the callback means that we'd lose some register 
values, so we would additional save/restore

Overall, it seems like the 'leak' of JavaThread is not worth the extra 
complexity?

Webrev:

http://cr.openjdk.java.net/~mcimadamore/panama/8226250_v2/

Maurizio



More information about the panama-dev mailing list