Awesome, thanks for the quick response! On a somewhat related note, what is the proper way of returning 'undefined' from a JSObject implementation? I have seen it work various ways but when I have tested our application on the jdk9 beta releases I have had to take a different approach than Undefined.getUndefined() or ScriptRuntime.UNDEFINED since as you mention in that bug report the internal package cannot be accessed.
Thanks again, Jesse On Sun, Aug 27, 2017 at 9:59 PM Sundararajan Athijegannathan < sundararajan.athijegannat...@oracle.com> wrote: > Hi, > > Thanks for the standalone test case! I reproduced the issue and filed a > bug -> https://bugs.openjdk.java.net/browse/JDK-8186807 > > Thanks, > -Sundar > > > On 24/08/17, 11:11 PM, Jesse Schulman wrote: > > The type is ScriptFunction, I've created a simple reproducer that I've > pushed to https://github.com/jesseschulman/JSObject_gets_ScriptFunction > <https://github.com/jesseschulman/JSObject_gets_ScriptFunction.git> > > Thanks! > Jesse > > On Thu, Aug 24, 2017 at 1:05 AM Sundararajan Athijegannathan < > sundararajan.athijegannat...@oracle.com> wrote: > >> what is the type of args[0]? Can you print args[0].getClass() to check it? >> >> Thanks, >> -Sundar >> >> >> On 24/08/17, 9:14 AM, Jesse Schulman wrote: >> >> I did try running with -Dnashorn.apply2call=false when I saw the email >> for that fix but it did not resolve the issue. >> >> There is no exception thrown, but our JSObject.call method basically is >> no-op as a result of not getting a ScriptObjectMirror, it effectively looks >> like this: >> >> @Override >> public Object call(Object thiz, Object ... args) { >> if (args.length < 2 || !(args[0] instanceof >> ScriptObjectMirror) || !((ScriptObjectMirror) args[0]).isFunction() || >> !(args[1] instanceof Integer)) >> return gScriptEnvironment.getUndefined(); >> >> // safely cast and call ScriptObjectMirror... >> } >> >> >> I am continuing to work on reproducing it outside our application in a >> simple way. In the mean time if there's any other information I can share >> besides a reproducing example, or suggestions on workarounds to try let me >> know. >> >> Thanks! >> Jesse >> >> On Wed, Aug 23, 2017 at 7:10 PM Sundararajan Athijegannathan < >> sundararajan.athijegannat...@oracle.com> wrote: >> >>> Hi, >>> >>> Sorry for the delayed response. We need more info to debug this - in >>> particular, what is the exception (if any) thrown etc. >>> >>> I wonder if this is related to this recent apply-related fix -> >>> >>> >>> http://mail.openjdk.java.net/pipermail/nashorn-dev/2017-August/006998.html >>> >>> -Sundar >>> >>> On 22/08/17, 3:43 AM, Jesse Schulman wrote: >>> > This does not happen on the first run of the code but is consistently >>> > happening on the 17th run after a restart and from that point forward >>> is >>> > broken until we restart. >>> > >>> > Attached is a broken and working call stack. >>> > >>> > I have tried to replicate what we are doing in a basic java reproducer >>> but >>> > have not been able to do so, given that I can consistently reproduce >>> this >>> > locally I am happy to take any suggested steps to gather more >>> information >>> > or to workaround/resolve the issue. >>> > >>> > Environment: >>> > Java version 1.8.144 >>> > Engine created with "--no-java", "-strict", "--no-syntax-extensions", >>> > "--language=es6", "--optimistic-types=true" (also tried with >>> > optimistic-types=false) >>> > All evaluation done on the same engine via engine.eval(String, >>> Bindings) >>> > using a Bindings that was returned from engine.createBindings, each of >>> the >>> > "runs" described above took place in a different Bindings instance >>> > >>> > Thanks! >>> > Jesse >>> >>