Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
marvec opened this issue Feb 18, 2025 · 1 comment
Open

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

marvec opened this issue Feb 18, 2025 · 1 comment
Assignees

Comments

@marvec
Copy link

marvec commented Feb 18, 2025

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.

@marvec
Copy link
Author

marvec commented Feb 19, 2025

I managed to run the test with GraalVM 24.2.1 and JDK 23 and it works in this setup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants