Graaljs: A project compiled against 19.0.0 and run against 19.1.0 fails with NPE

Created on 9 Jul 2019  路  3Comments  路  Source: oracle/graaljs

es4x: org.graalvm.polyglot.PolyglotException: java.lang.NullPointerException
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode$CachingObjectLiteralMemberNode$CacheEntry.isValid(ObjectLiteralNode.java:214)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode$CachingObjectLiteralMemberNode.filterValid(ObjectLiteralNode.java:243)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode$CachingObjectLiteralMemberNode.insertIntoCache(ObjectLiteralNode.java:235)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode$ObjectLiteralDataMemberNode.rewrite(ObjectLiteralNode.java:332)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode$ObjectLiteralDataMemberNode.execute(ObjectLiteralNode.java:299)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode$ObjectLiteralDataMemberNode.executeVoid(ObjectLiteralNode.java:275)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode.executeWithObject(ObjectLiteralNode.java:732)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode.execute(ObjectLiteralNode.java:725)
es4x:   at com.oracle.truffle.js.nodes.access.ObjectLiteralNode.execute(ObjectLiteralNode.java:90)
es4x:   at com.oracle.truffle.js.nodes.access.WritePropertyNode.executeAndSpecialize(WritePropertyNode.java:246)
es4x:   at com.oracle.truffle.js.nodes.access.WritePropertyNode.executeVoid(WritePropertyNode.java:216)
es4x:   at com.oracle.truffle.js.nodes.control.AbstractBlockNode.executeVoid(AbstractBlockNode.java:74)
es4x:   at com.oracle.truffle.js.nodes.control.BlockNode.execute(BlockNode.java:62)
es4x:   at com.oracle.truffle.js.nodes.function.FunctionBodyNode.execute(FunctionBodyNode.java:73)
es4x:   at com.oracle.truffle.js.nodes.function.FunctionRootNode.executeInRealm(FunctionRootNode.java:147)
es4x:   at com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode.execute(JavaScriptRealmBoundaryRootNode.java:93)
bug

Most helpful comment

Thank you for the report. It seems that the root of the problem is in an incorrect/missing synchronization of the cache in ObjectLiteralNode. I was able to reproduce this exception locally (by modifying ObjectLiteralNode a bit to increase the likelihood of this race condition).

All 3 comments

Thank you for the report. It seems that the root of the problem is in an incorrect/missing synchronization of the cache in ObjectLiteralNode. I was able to reproduce this exception locally (by modifying ObjectLiteralNode a bit to increase the likelihood of this race condition).

Sorry for not having a proper reproducer but the issue only happens on a 32 core metal server but I couldn't get in on a cloud/laptop/docker... Plus the exception only contains graal traces ...

Thanks for the report, this will be fixed in 19.2.0 (and is fixed in master now).

Was this page helpful?
0 / 5 - 0 ratings