Skip to content

AssertionError exception in JSObject.java when calling JS from Java #10713

@marvec

Description

@marvec

Describe GraalVM and your environment :

  • GraalVM version: 22.3.0-22.3.5 (tried all or them)
  • CE or EE: CE
  • JDK version: 21
  • OS and OS Version: macOS Sequoia
  • Architecture: aarch64 (Apple Silicon M4)
  • The output of java -Xinternalversion:
OpenJDK 64-Bit Server VM (21.0.2+13-58) for bsd-aarch64 JRE (21.0.2+13-58), built on 2024-01-05T18:32:24Z by "mach5one" with clang Apple LLVM 12.0.0 (clang-1200.0.32.29)

Have you verified this issue still happens when using the latest snapshot?
No, I cannot run with version 24.x and newer due to a different issue.

Describe the issue
AssertionException in JSObject.java when calling JS from Java.
While debugging the code the method received key "type" and value "collection" both of type java.lang.String.

org.graalvm.polyglot.PolyglotException: java.lang.AssertionError
	at com.oracle.truffle.js.runtime.objects.JSObject.setWithReceiver(JSObject.java:386)
	at com.oracle.truffle.js.nodes.access.CachedSetPropertyNode.doGeneric(CachedSetPropertyNode.java:148)
	at com.oracle.truffle.js.nodes.access.CachedSetPropertyNodeGen.execute(CachedSetPropertyNodeGen.java:88)
	at com.oracle.truffle.js.nodes.access.WriteElementNode$JSObjectWriteElementTypeCacheNode.setCachedProperty(WriteElementNode.java:632)
	at com.oracle.truffle.js.nodes.access.WriteElementNode$JSObjectWriteElementTypeCacheNode.setPropertyGeneric(WriteElementNode.java:624)
	at com.oracle.truffle.js.nodes.access.WriteElementNode$JSObjectWriteElementTypeCacheNode.executeWithTargetAndIndexUnguarded(WriteElementNode.java:567)
	at com.oracle.truffle.js.nodes.access.WriteElementNode.executeWithTargetAndIndexAndValue(WriteElementNode.java:435)
	at com.oracle.truffle.js.nodes.access.WriteElementNode.executeWithTargetAndIndexAndValue(WriteElementNode.java:419)
	at com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$AssignPropertiesNode.doObject(ObjectFunctionBuiltins.java:974)
	at com.oracle.truffle.js.builtins.ObjectFunctionBuiltinsFactory$AssignPropertiesNodeGen.executeAndSpecialize(ObjectFunctionBuiltinsFactory.java:2893)
	at com.oracle.truffle.js.builtins.ObjectFunctionBuiltinsFactory$AssignPropertiesNodeGen.executeVoid(ObjectFunctionBuiltinsFactory.java:2821)
	at com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectAssignNode.assign(ObjectFunctionBuiltins.java:922)
	at com.oracle.truffle.js.builtins.ObjectFunctionBuiltinsFactory$ObjectAssignNodeGen.execute(ObjectFunctionBuiltinsFactory.java:2674)
	at com.oracle.truffle.js.nodes.function.FunctionRootNode.executeInRealm(FunctionRootNode.java:149)
	at com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode.execute(JavaScriptRealmBoundaryRootNode.java:88)
	at <js> Xt(Unnamed:25:344106-344129)
	at <js> uA(Unnamed:214:470621-470628)
	at <js> :anonymous(Unnamed:214:470583-470589)
	at <js> qA(Unnamed:214:470557-470592)
	at <js> filterDocumentsAndLinksByQuery(Unnamed:222:1283199-1283258)
	at org.graalvm.polyglot.Value.execute(Value.java:880)
	at io.lumeer.core.util.js.DataFilterTask.call(DataFilterTask.kt:59)
	at io.lumeer.core.util.js.DataFilter$Companion.filterDocumentsAndLinksByQuery(DataFilter.kt:42)
	at io.lumeer.core.util.js.DataFilter$Companion.filterDocumentsAndLinksByQuery$default(DataFilter.kt:37)
	at io.lumeer.core.util.js.DataFiltersJsParserTest.test(DataFiltersJsParserTest.kt:82)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:198)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85)
	at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:63)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)

Code snippet or code repository that reproduces the issue

https://github.com/Lumeer/engine branch graal

Steps to reproduce the issue

git clone https://github.com/Lumeer/engine
cd engine
git checkout graal
git pull

mvn clean install -DskipTests
cd lumeer-core
mvn test -Dtest=DataFiltersJsParserTest

Expected behavior
No exception should be thrown and the test should pass. This is true with GraalVM 21.3.13.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions