ScriptFunction being passed to JSObject, expected ScriptObjectMirror

Sundararajan Athijegannathan sundararajan.athijegannathan at oracle.com
Thu Aug 24 08:07:37 UTC 2017


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