Possible endless loop while computing the classpath entries
-----------------------------------------------------------

                 Key: IVYDE-75
                 URL: https://issues.apache.org/jira/browse/IVYDE-75
             Project: IvyDE
          Issue Type: Bug
    Affects Versions: 1.3.0
         Environment: Eclipse 3.2
            Reporter: Nicolas Lalevée
            Priority: Minor


While trying to debug IVYDE-70, having a break point make the resolving process 
loop indefinitely. I cannot say if there is really a bug or not, because 
running while having break points is not the standard way the thread runs. But 
it shows there is a possibility that the resolve process may run sevral times, 
which should not happend.

And after I remove the breakpoint, there is no StackOverflowError, so I assume 
this bug might not appear in normal cases.

Here is the stack trace copied from Eclipse :

{noformat}
IvyClasspathContainer.computeClasspathEntries(boolean, boolean, boolean) line: 
617      
IvyClasspathContainer.refresh(boolean) line: 644        
IvyClasspathInitializer.initialize(IPath, IJavaProject) line: 61        
JavaModelManager.initializeContainer(IJavaProject, IPath) line: 1924    
JavaModelManager.getClasspathContainer(IPath, IJavaProject) line: 1267  
JavaCore.getClasspathContainer(IPath, IJavaProject) line: 1470  
JavaProject.getResolvedClasspath(IClasspathEntry[], IPath, boolean, boolean, 
Map) line: 2169    
JavaProject.getResolvedClasspath(boolean, boolean, boolean) line: 2073  
JavaCore.setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], 
IProgressMonitor) line: 4189       
IvyClasspathContainer.notifyUpdateClasspathEntries() line: 682  
IvyClasspathContainer.access$7(IvyClasspathContainer) line: 678 
IvyClasspathContainer$4.run() line: 672 
RunnableLock.run() line: 35     
UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 123        
Display.runAsyncMessages(boolean) line: 3157    
Display.readAndDispatch() line: 2859    
EventLoopProgressMonitor.runEventLoop() line: 123       
EventLoopProgressMonitor.isCanceled() line: 97  
ThreadJob.isCanceled(IProgressMonitor) line: 126        
ThreadJob.joinRun(IProgressMonitor) line: 161   
ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 
JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 219       
WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 96 
Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 1684        
Project.touch(IProgressMonitor) line: 1035      
SetClasspathOperation.executeOperation() line: 288      
SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 720       
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
SetClasspathOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 
784      
JavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor, 
boolean, IClasspathEntry[], boolean, boolean) line: 3016        
JavaCore$5.run(IProgressMonitor) line: 4215     
BatchOperation.executeOperation() line: 39      
BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 720      
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
JavaCore.run(IWorkspaceRunnable, ISchedulingRule, IProgressMonitor) line: 4024  
JavaCore.setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], 
IProgressMonitor) line: 4198       
IvyClasspathContainer.notifyUpdateClasspathEntries() line: 682  
IvyClasspathContainer.access$7(IvyClasspathContainer) line: 678 
IvyClasspathContainer$4.run() line: 672 
RunnableLock.run() line: 35     
UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 123        
Display.runAsyncMessages(boolean) line: 3157    
Display.readAndDispatch() line: 2859    
EventLoopProgressMonitor.runEventLoop() line: 123       
EventLoopProgressMonitor.isCanceled() line: 97  
ThreadJob.isCanceled(IProgressMonitor) line: 126        
ThreadJob.joinRun(IProgressMonitor) line: 161   
ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 
JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 219       
WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 96 
Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 1684        
Project.touch(IProgressMonitor) line: 1035      
SetClasspathOperation.executeOperation() line: 288      
SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 720       
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
SetClasspathOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 
784      
JavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor, 
boolean, IClasspathEntry[], boolean, boolean) line: 3016        
JavaCore$5.run(IProgressMonitor) line: 4215     
BatchOperation.executeOperation() line: 39      
BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 720      
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
JavaCore.run(IWorkspaceRunnable, ISchedulingRule, IProgressMonitor) line: 4024  
JavaCore.setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], 
IProgressMonitor) line: 4198       
IvyClasspathContainer.notifyUpdateClasspathEntries() line: 682  
IvyClasspathContainer.access$7(IvyClasspathContainer) line: 678 
IvyClasspathContainer$4.run() line: 672 
RunnableLock.run() line: 35     
UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 123        
Display.runAsyncMessages(boolean) line: 3157    
Display.readAndDispatch() line: 2859    
EventLoopProgressMonitor.runEventLoop() line: 123       
EventLoopProgressMonitor.isCanceled() line: 97  
ThreadJob.isCanceled(IProgressMonitor) line: 126        
ThreadJob.joinRun(IProgressMonitor) line: 161   
ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 
JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 219       
WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 96 
Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 1684        
Project.touch(IProgressMonitor) line: 1035      
SetClasspathOperation.executeOperation() line: 288      
SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 720       
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
SetClasspathOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 
784      
JavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor, 
boolean, IClasspathEntry[], boolean, boolean) line: 3016        
JavaCore$5.run(IProgressMonitor) line: 4215     
BatchOperation.executeOperation() line: 39      
BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 720      
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
JavaCore.run(IWorkspaceRunnable, ISchedulingRule, IProgressMonitor) line: 4024  
JavaCore.setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], 
IProgressMonitor) line: 4198       
IvyClasspathContainer.notifyUpdateClasspathEntries() line: 682  
IvyClasspathContainer.access$7(IvyClasspathContainer) line: 678 
IvyClasspathContainer$4.run() line: 672 
RunnableLock.run() line: 35     
UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 123        
Display.runAsyncMessages(boolean) line: 3157    
Display.readAndDispatch() line: 2859    
EventLoopProgressMonitor.runEventLoop() line: 123       
EventLoopProgressMonitor.isCanceled() line: 97  
ThreadJob.isCanceled(IProgressMonitor) line: 126        
ThreadJob.joinRun(IProgressMonitor) line: 161   
ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 
JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 219       
WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 96 
Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 1684        
Project.touch(IProgressMonitor) line: 1035      
SetClasspathOperation.executeOperation() line: 288      
SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 720       
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
SetClasspathOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 
784      
JavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor, 
boolean, IClasspathEntry[], boolean, boolean) line: 3016        
JavaCore$5.run(IProgressMonitor) line: 4215     
BatchOperation.executeOperation() line: 39      
BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 720      
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
JavaCore.run(IWorkspaceRunnable, ISchedulingRule, IProgressMonitor) line: 4024  
JavaCore.setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], 
IProgressMonitor) line: 4198       
IvyClasspathContainer.notifyUpdateClasspathEntries() line: 682  
IvyClasspathContainer.access$7(IvyClasspathContainer) line: 678 
IvyClasspathContainer$4.run() line: 672 
RunnableLock.run() line: 35     
UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 123        
Display.runAsyncMessages(boolean) line: 3157    
Display.readAndDispatch() line: 2859    
EventLoopProgressMonitor.runEventLoop() line: 123       
EventLoopProgressMonitor.isCanceled() line: 97  
ThreadJob.isCanceled(IProgressMonitor) line: 126        
ThreadJob.joinRun(IProgressMonitor) line: 161   
ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 87 
JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 219       
WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 96 
Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 1684        
Project.touch(IProgressMonitor) line: 1035      
SetClasspathOperation.executeOperation() line: 288      
SetClasspathOperation(JavaModelOperation).run(IProgressMonitor) line: 720       
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
SetClasspathOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 
784      
JavaProject.setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor, 
boolean, IClasspathEntry[], boolean, boolean) line: 3016        
JavaCore$5.run(IProgressMonitor) line: 4215     
BatchOperation.executeOperation() line: 39      
BatchOperation(JavaModelOperation).run(IProgressMonitor) line: 720      
Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, IProgressMonitor) line: 
1737    
JavaCore.run(IWorkspaceRunnable, ISchedulingRule, IProgressMonitor) line: 4024  
JavaCore.setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], 
IProgressMonitor) line: 4198       
IvyClasspathContainer.notifyUpdateClasspathEntries() line: 682  
IvyClasspathContainer.access$7(IvyClasspathContainer) line: 678 
IvyClasspathContainer$4.run() line: 672 
RunnableLock.run() line: 35     
UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 123        
Display.runAsyncMessages(boolean) line: 3157    
Display.readAndDispatch() line: 2859    
Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 1930    
Workbench.runUI() line: 1894    
Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 422    
PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149   
IDEApplication.run(Object) line: 95     
PlatformActivator$1.run(Object) line: 78        
EclipseAppLauncher.runApplication(Object) line: 92      
EclipseAppLauncher.start(Object) line: 68       
EclipseStarter.run(Object) line: 400    
EclipseStarter.run(String[], Runnable) line: 177        
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available 
[native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39      
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25  
Method.invoke(Object, Object...) line: 597      
Main.invokeFramework(String[], URL[]) line: 336 
Main.basicRun(String[]) line: 280       
Main.run(String[]) line: 977    
Main.main(String[]) line: 952   
{noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to