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.