Questions about the trivial downcall

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Jul 27 00:29:25 UTC 2023


> and does not call back into Java (e.g. using an upcall stub). 
> ß------------------------- it occurs to me that any kind of upcall 
> should be disallowed in such case whether it is JNI or FFM, am I correct?
>
Right, JNI has not much to do with this. There's different ways to 
upcall back into Java (JNI and FFM upcall stubs).

Your question is: what happens if we do call back when we are in trivial 
mode.

I believe the answer is "we crash" (but not in a "nice way"), and I'm 
not too sure we can do much to prevent that. I believe Jorn knows more 
on that topic.

Maurizio

> Best Regards
>
> Cheng Jin
>
> *From:*Maurizio Cimadamore <maurizio.cimadamore at oracle.com>
> *Sent:* Wednesday, July 26, 2023 7:44 PM
> *To:* Cheng Jin <jincheng at ca.ibm.com>; panama-dev at openjdk.org
> *Subject:* [EXTERNAL] Re: Questions about the trivial downcall
>
> Hi, a trivial downcall is supposed to target a native function that 
> (a) terminates quickly (so as not to block the GC for too long) and 
> (b) does not upcall into Java. So, no, a trivial downcall cannot 
> trigger upcalls (I don't think we detect
>
> ZjQcmQRYFpfptBannerStart
>
> *This Message Is From an External Sender *
>
> This message came from outside your organization.
>
> *  Report Suspicious * 
> <https://us-phishalarm-ewt.proofpoint.com/EWT/v1/PjiDSg!2c-r455VanMQ2qYReaGl7Z4QRx46ATMxAjK9nbXsj13QlLeimn0PtcIAb-U80cJ-A34Q8dYfoQ6JN5nMYOpBz-Hn3cuAGTZLJQ$>  ‌ 
>
>
> ZjQcmQRYFpfptBannerEnd
>
> Hi,
> a trivial downcall is supposed to target a native function that (a) 
> terminates quickly (so as not to block the GC for too long) and (b) 
> does not upcall into Java.
>
> So, no, a trivial downcall cannot trigger upcalls (I don't think we 
> detect this, I believe the JVM just crashes if you do).
>
> Also I notice that you speak of "JNI" upcall. Is that what you really 
> mean - e.g. a trivial FFM downcall making an upcall using JNI? In 
> general, I think it's a bit hard for downcalls to do anything that has 
> to do with JNI because the invoked native function is not passed a 
> JNIEnv - FFM really just bridges the Java code with the native library 
> function you want to call, nothing more. (I suppose that function 
> could get its hands on the VM using the JNI attach API, but I feel 
> that's a different question from what you were asking?).
>
> Maurizio
>
> On 26/07/2023 22:23, Cheng Jin wrote:
>
>     Hi there,
>
>     I’ve got a couple of questions about the behavior of a trivial
>     downcall (with *isTrivial* specified).
>
>     Is a FFI downcall able to trigger a JNI upcall ?
>
>     If so, should a JNI upcall should be captured in this trivial
>     downcall?
>
>     Best Regards
>
>     Cheng Jin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/panama-dev/attachments/20230727/98aaee59/attachment.htm>


More information about the panama-dev mailing list