ScriptFunction being passed to JSObject, expected ScriptObjectMirror

Sundararajan Athijegannathan sundararajan.athijegannathan at oracle.com
Mon Aug 28 05:02:11 UTC 2017


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.athijegannathan at oracle.com 
> <mailto:sundararajan.athijegannathan at 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.athijegannathan at oracle.com
>>     <mailto:sundararajan.athijegannathan at 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
>>


More information about the nashorn-dev mailing list