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

StackOverflowError in MutableTypeToFieldChecker #192

Open
paplorinc opened this issue Oct 3, 2022 · 0 comments
Open

StackOverflowError in MutableTypeToFieldChecker #192

paplorinc opened this issue Oct 3, 2022 · 0 comments

Comments

@paplorinc
Copy link

Steps to reproduce:
Add https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params/5.9.1 dependency and run the following test:

    @Test
    void validate_FieldConversionMapping() throws Exception {
        var analysisSession = DefaultCachingAnalysisSession.createWithCurrentClassPath(NO_CONFIGURATION);
        analysisSession.resultFor(Dotted.fromClass(FieldConversionMapping.class));
    }

you'll get:



An unhandled error occurred. Please read message at end of this output.

Class being analysed: org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping
Checker that failed: MutableTypeToFieldChecker
Classes analysed so far:

An unhandled error occurred while analysing the class 'org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping'.

This is probably my fault, not yours, and I am sorry.
I'd love to get an opportunity to fix this, please report as an issue at:
 https://github.com/MutabilityDetector/MutabilityDetector/issues/ 
Pasting in this error message and stack trace, and if possible, 
information about the code causing the error. 
For example, one of: 
    .class files (preferably with source);
    compilable .java files; 
    a jar (again preferably with source);
    or, if your project is open source, information on where I can get the code from
        (I'm happy to checkout and build your project in order to investigate the error).

Apologies, and thank you for using Mutability Detector.


org.mutabilitydetector.checkers.MutabilityAnalysisException: 
An unhandled error occurred. Please read message at end of this output.

Class being analysed: org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping
Checker that failed: MutableTypeToFieldChecker
Classes analysed so far:

An unhandled error occurred while analysing the class 'org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping'.

This is probably my fault, not yours, and I am sorry.
I'd love to get an opportunity to fix this, please report as an issue at:
 https://github.com/MutabilityDetector/MutabilityDetector/issues/ 
Pasting in this error message and stack trace, and if possible, 
information about the code causing the error. 
For example, one of: 
    .class files (preferably with source);
    compilable .java files; 
    a jar (again preferably with source);
    or, if your project is open source, information on where I can get the code from
        (I'm happy to checkout and build your project in order to investigate the error).

Apologies, and thank you for using Mutability Detector.


	at app//org.mutabilitydetector.checkers.UnhandledExceptionBuilder.unhandledException(UnhandledExceptionBuilder.java:62)
	at app//org.mutabilitydetector.checkers.CheckerRunner.attemptRecovery(CheckerRunner.java:121)
	at app//org.mutabilitydetector.checkers.CheckerRunner.runVisitor(CheckerRunner.java:89)
	at app//org.mutabilitydetector.checkers.CheckerRunner.run(CheckerRunner.java:69)
	at app//org.mutabilitydetector.checkers.AllChecksRunner.runCheckers(AllChecksRunner.java:75)
	at app//org.mutabilitydetector.DefaultCachingAnalysisSession.requestAnalysis(DefaultCachingAnalysisSession.java:141)
	at app//org.mutabilitydetector.DefaultCachingAnalysisSession.resultFor(DefaultCachingAnalysisSession.java:120)
	at app//com.lorinc.pap.statest.visitor.PureStMethodAnalyzerTest.validate_FieldConversionMapping(PureStMethodAnalyzerTest.java:110)
	at java.base@11.0.16.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@11.0.16.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base@11.0.16.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@11.0.16.1/java.lang.reflect.Method.invoke(Method.java:566)
	at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
	at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base@11.0.16.1/java.util.ArrayList.forEach(ArrayList.java:1541)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base@11.0.16.1/java.util.ArrayList.forEach(ArrayList.java:1541)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	at java.base@11.0.16.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@11.0.16.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base@11.0.16.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@11.0.16.1/java.lang.reflect.Method.invoke(Method.java:566)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: org.mutabilitydetector.checkers.MutabilityAnalysisException: 
An unhandled error occurred. Please read message at end of this output.

Class being analysed: org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.AbstractConversionMapping
Checker that failed: MutableTypeToFieldChecker
Classes analysed so far:
    java.util.LinkedHashMap$LinkedValues
    java.util.TreeMap$AscendingSubMap$AscendingEntrySetView
    org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping$4
    java.util.LinkedHashMap
    java.util.LinkedHashMap$Entry
    java.util.TreeMap$AscendingSubMap
    java.util.TreeMap$Entry
    java.util.Map
    java.util.TreeMap$KeySet
    org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping$3
    java.util.ArrayList
    java.util.LinkedHashMap$LinkedEntrySet
    java.util.TreeMap
    java.util.TreeMap$DescendingSubMap
    java.util.HashMap$KeySet
    java.util.List
    java.util.TreeMap$EntrySet
    java.util.Comparator
    java.util.TreeMap$Values
    java.util.HashMap$TreeNode
    org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping$1
    java.util.HashMap$Values
    java.util.NavigableMap
    java.util.LinkedHashMap$LinkedKeySet
    org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping$2
    java.util.HashMap$EntrySet
    java.util.HashMap
    java.lang.Object
    java.util.HashMap$Node
    java.util.TreeMap$DescendingSubMap$DescendingEntrySetView

An unhandled error occurred while analysing the class 'org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.AbstractConversionMapping'.

This is probably my fault, not yours, and I am sorry.
I'd love to get an opportunity to fix this, please report as an issue at:
 https://github.com/MutabilityDetector/MutabilityDetector/issues/ 
Pasting in this error message and stack trace, and if possible, 
information about the code causing the error. 
For example, one of: 
    .class files (preferably with source);
    compilable .java files; 
    a jar (again preferably with source);
    or, if your project is open source, information on where I can get the code from
        (I'm happy to checkout and build your project in order to investigate the error).

Apologies, and thank you for using Mutability Detector.


	at app//org.mutabilitydetector.checkers.UnhandledExceptionBuilder.unhandledException(UnhandledExceptionBuilder.java:62)
	at app//org.mutabilitydetector.checkers.CheckerRunner.attemptRecovery(CheckerRunner.java:121)
	at app//org.mutabilitydetector.checkers.CheckerRunner.runVisitor(CheckerRunner.java:89)
	at app//org.mutabilitydetector.checkers.CheckerRunner.run(CheckerRunner.java:69)
	at app//org.mutabilitydetector.checkers.AllChecksRunner.runCheckers(AllChecksRunner.java:75)
	at app//org.mutabilitydetector.DefaultCachingAnalysisSession.requestAnalysis(DefaultCachingAnalysisSession.java:141)
	at app//org.mutabilitydetector.DefaultCachingAnalysisSession.processTransitiveAnalysis(DefaultCachingAnalysisSession.java:125)
	at app//org.mutabilitydetector.checkers.info.MutableTypeInformation.requestAnalysisIfNoCyclicReferenceDetected(MutableTypeInformation.java:67)
	at app//org.mutabilitydetector.checkers.info.MutableTypeInformation.resultOf(MutableTypeInformation.java:59)
	at app//org.mutabilitydetector.checkers.MutableTypeToFieldChecker$AssignMutableTypeToFieldChecker.checkIfClassIsMutable(MutableTypeToFieldChecker.java:174)
	at app//org.mutabilitydetector.checkers.MutableTypeToFieldChecker$AssignMutableTypeToFieldChecker.visitFieldAssignmentFrame(MutableTypeToFieldChecker.java:156)
	at app//org.mutabilitydetector.checkers.FieldAssignmentVisitor.visitEnd(FieldAssignmentVisitor.java:92)
	at app//org.mutabilitydetector.internal.org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1495)
	at app//org.mutabilitydetector.internal.org.objectweb.asm.ClassReader.accept(ClassReader.java:721)
	at app//org.mutabilitydetector.internal.org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
	at app//org.mutabilitydetector.checkers.CheckerRunner.analyse(CheckerRunner.java:112)
	at app//org.mutabilitydetector.checkers.CheckerRunner.analyseFromClassLoader(CheckerRunner.java:107)
	at app//org.mutabilitydetector.checkers.CheckerRunner.runVisitor(CheckerRunner.java:86)
	... 90 more
Caused by: java.lang.StackOverflowError
	at org.mutabilitydetector.checkers.ImmutableCollectionChecker.lastMeaningfulNode(ImmutableCollectionChecker.java:238)
	at org.mutabilitydetector.checkers.ImmutableCollectionChecker.lastMeaningfulNode(ImmutableCollectionChecker.java:238)
	at org.mutabilitydetector.checkers.ImmutableCollectionChecker.lastMeaningfulNode(ImmutableCollectionChecker.java:238)
[...]

I'm using JDK 11.0.16.1 and MutabilityDetector 0 .10.6

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

No branches or pull requests

1 participant