You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Marcell Hegedus (JIRA)" <ji...@apache.org> on 2012/06/27 20:08:44 UTC

[jira] [Created] (IVY-1362) Memory leak and infinite loop in ModuleId.java

Marcell Hegedus created IVY-1362:
------------------------------------

             Summary: Memory leak and infinite loop in ModuleId.java
                 Key: IVY-1362
                 URL: https://issues.apache.org/jira/browse/IVY-1362
             Project: Ivy
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.2.0
         Environment: Eclipse / IvyDE
            Reporter: Marcell Hegedus


ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]

The same issue and a memory leak was fixed in IVY-791.

{code:title=Stacktrace of a hanging thread}
java.lang.Thread.State: RUNNABLE
	at java.util.WeakHashMap.get(Unknown Source)
	at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
	at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
	at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
	at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
	at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
	at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
	at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
	at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
	at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
	at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
	at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
	at org.apache.ivy.Ivy.resolve(Ivy.java:512)
	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (IVY-1362) Memory leak and infinite loop in ModuleId.java

Posted by "Marcell Hegedus (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13438631#comment-13438631 ] 

Marcell Hegedus commented on IVY-1362:
--------------------------------------

Verified again and it is ok. Thank you!
                
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
>                 Key: IVY-1362
>                 URL: https://issues.apache.org/jira/browse/IVY-1362
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0
>         Environment: Eclipse / IvyDE
>            Reporter: Marcell Hegedus
>            Assignee: Maarten Coene
>             Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> 	at java.util.WeakHashMap.get(Unknown Source)
> 	at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> 	at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> 	at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> 	at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> 	at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> 	at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> 	at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> 	at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (IVY-1362) Memory leak and infinite loop in ModuleId.java

Posted by "Marcell Hegedus (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437552#comment-13437552 ] 

Marcell Hegedus commented on IVY-1362:
--------------------------------------

Memory leak is not fixed. Please check the diff of IVY-791. This should be the same patch.
                
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
>                 Key: IVY-1362
>                 URL: https://issues.apache.org/jira/browse/IVY-1362
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0
>         Environment: Eclipse / IvyDE
>            Reporter: Marcell Hegedus
>            Assignee: Maarten Coene
>             Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> 	at java.util.WeakHashMap.get(Unknown Source)
> 	at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> 	at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> 	at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> 	at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> 	at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> 	at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> 	at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> 	at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (IVY-1362) Memory leak and infinite loop in ModuleId.java

Posted by "Maarten Coene (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437595#comment-13437595 ] 

Maarten Coene commented on IVY-1362:
------------------------------------

Thanks for verifying, it did my homework again and hopefully it is ok now?
                
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
>                 Key: IVY-1362
>                 URL: https://issues.apache.org/jira/browse/IVY-1362
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0
>         Environment: Eclipse / IvyDE
>            Reporter: Marcell Hegedus
>            Assignee: Maarten Coene
>             Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> 	at java.util.WeakHashMap.get(Unknown Source)
> 	at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> 	at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> 	at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> 	at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> 	at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> 	at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> 	at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> 	at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (IVY-1362) Memory leak and infinite loop in ModuleId.java

Posted by "Maarten Coene (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Maarten Coene resolved IVY-1362.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 2.3.0
         Assignee: Maarten Coene

Fixed in the next release. Thanks for reporting.
                
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
>                 Key: IVY-1362
>                 URL: https://issues.apache.org/jira/browse/IVY-1362
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0
>         Environment: Eclipse / IvyDE
>            Reporter: Marcell Hegedus
>            Assignee: Maarten Coene
>             Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> 	at java.util.WeakHashMap.get(Unknown Source)
> 	at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> 	at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> 	at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> 	at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> 	at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> 	at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> 	at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> 	at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Comment Edited] (IVY-1362) Memory leak and infinite loop in ModuleId.java

Posted by "Maarten Coene (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437595#comment-13437595 ] 

Maarten Coene edited comment on IVY-1362 at 8/20/12 9:04 AM:
-------------------------------------------------------------

Thanks for verifying, I did my homework again and hopefully it is ok now?
                
      was (Author: maartenc):
    Thanks for verifying, it did my homework again and hopefully it is ok now?
                  
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
>                 Key: IVY-1362
>                 URL: https://issues.apache.org/jira/browse/IVY-1362
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0
>         Environment: Eclipse / IvyDE
>            Reporter: Marcell Hegedus
>            Assignee: Maarten Coene
>             Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> 	at java.util.WeakHashMap.get(Unknown Source)
> 	at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> 	at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> 	at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> 	at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> 	at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> 	at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> 	at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> 	at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> 	at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> 	at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> 	at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> 	at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> 	at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> 	at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> 	at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira