[ 
https://issues.apache.org/jira/browse/MRESOLVER-38?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16342135#comment-16342135
 ] 

Robert Scholte commented on MRESOLVER-38:
-----------------------------------------

My guess is that it has to do with the implementation of the 
{{PathRecordingDependencyVisitor}}

{code}
private final Map<DependencyNode, Object> visited;
{code}
It looks like this is used to prevent circular references, since it is added on 
the visitEnter, removed on the visitLeave.
However, it uses the 
[IdentityHashMap|https://docs.oracle.com/javase/9/docs/api/index.html?java/util/IdentityHashMap.html]
 but I wonder how these DependencyNodes are constructed. The 
{{DefaultDepenendecyNode}} is missing the equals-method, so it looks like 
there's no way to prevent invalid trees. Not sure if that's the issue here, 
requires extra investigation.

> SOE/OOME in DefaultDependencyNode.accept
> ----------------------------------------
>
>                 Key: MRESOLVER-38
>                 URL: https://issues.apache.org/jira/browse/MRESOLVER-38
>             Project: Maven Resolver
>          Issue Type: Bug
>          Components: resolver
>    Affects Versions: Maven Artifact Resolver 1.1.0
>            Reporter: Andreas Sewe
>            Priority: Critical
>         Attachments: maven-resolver-demos.patch
>
>
> I noticed a {{StackOverflowErrror}} when trying to build the classpath for 
> {{org.webjars.npm:n3-charts:2.0.17}} using Maven Resolver 1.1.0.
> I’ve managed to produce a minimal example based on the 
> {{maven-resolver-demos}} from the {{master-with-demos}} branch. To reproduce, 
> just apply the attached patch to the branch (tried this with commit 
> [{{84a32a86}}|https://github.com/apache/maven-resolver/commit/84a32a866ff27d4df75124074fd925588f4a574d])
>  and run the {{GetDependencyTree}} example:
> {noformat}
> ------------------------------------------------------------
> GetDependencyTree
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further 
> details.
> Resolving artifact org.webjars.npm:n3-charts:pom:2.0.17
> Resolved artifact org.webjars.npm:n3-charts:pom:2.0.17 from central 
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> …
> Resolving metadata org.webjars.npm:uglifycss/maven-metadata.xml from central 
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> Resolved metadata org.webjars.npm:uglifycss/maven-metadata.xml from central 
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> Resolving artifact org.webjars.npm:uglifycss:pom:0.0.18
> Resolved artifact org.webjars.npm:uglifycss:pom:0.0.18 from central 
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> Exception in thread "main" java.lang.StackOverflowError
>       at 
> org.eclipse.aether.util.graph.visitor.PathRecordingDependencyVisitor.visitEnter(PathRecordingDependencyVisitor.java:102)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:341)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
> {noformat}
> (Note: The patch changes the {{plexus-utils}} version as well, as I was 
> getting a {{ClassNotFoundException}} for 
> {{org.codehaus.plexus.util.xml.pull.EntityReplacementMap}} otherwise.)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to