| Summary: | Data race on org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.preferences | ||
|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Yilong Li <yilong.li> |
| Component: | Core | Assignee: | JDT-Core-Inbox <jdt-core-inbox> |
| Status: | CLOSED WONTFIX | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | ||
| Version: | 4.6 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Whiteboard: | stalebug | ||
There are races on outputLocation and rawClasspath as well:
Data race on field org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.outputLocation: {{{
Concurrent write in thread T1 (locks held: {Monitor@473e4597})
----> at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.setClasspath(JavaModelManager.java:1222)
at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.setResolvedClasspath(JavaModelManager.java:1256)
- locked Monitor@473e4597 at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.setResolvedClasspath(JavaModelManager.java:n/a)
at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2863)
at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1962)
at org.eclipse.jdt.internal.core.DeltaProcessingState.getRootInfos(DeltaProcessingState.java:311)
at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:256)
at org.eclipse.jdt.internal.core.DeltaProcessor.processResourceDelta(DeltaProcessor.java:1858)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2059)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:477)
at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:299)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:289)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:152)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:374)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1471)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2251)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:794)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3097)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3059)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3112)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.setClasspath(TestingEnvironment.java:1048)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.addEntry(TestingEnvironment.java:285)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.addExternalJars(TestingEnvironment.java:265)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.addExternalJars(TestingEnvironment.java:253)
at org.eclipse.jdt.core.tests.builder.BasicBuildTests.testTags(BasicBuildTests.java:177)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:692)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:319)
at org.eclipse.test.CoreTestApplication.runTests(CoreTestApplication.java:36)
at org.eclipse.test.CoreTestApplication.run(CoreTestApplication.java:32)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
at org.eclipse.core.launcher.Main.main(Main.java:34)
T1 is the main thread
Concurrent read in thread T29 (locks held: {})
----> at org.eclipse.jdt.internal.core.JavaProject.getOutputLocation(JavaProject.java:1737)
at org.eclipse.jdt.internal.core.search.indexing.IndexAllProject.execute(IndexAllProject.java:125)
at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:405)
T29 is created by T1
at org.eclipse.jdt.internal.core.search.processing.JobManager.reset(JobManager.java:331)
}}}
Data race on field org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.rawClasspath: {{{
Concurrent write in thread T1 (locks held: {Monitor@72e70c3d})
----> at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.setClasspath(JavaModelManager.java:1221)
at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.setResolvedClasspath(JavaModelManager.java:1256)
- locked Monitor@72e70c3d at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.setResolvedClasspath(JavaModelManager.java:n/a)
at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2863)
at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1962)
at org.eclipse.jdt.internal.core.ProjectReferenceChange.updateProjectReferencesIfNecessary(ProjectReferenceChange.java:47)
at org.eclipse.jdt.internal.core.ChangeClasspathOperation.classpathChanged(ChangeClasspathOperation.java:59)
at org.eclipse.jdt.internal.core.SetClasspathOperation.executeOperation(SetClasspathOperation.java:74)
at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:729)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2242)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:794)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3097)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3059)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3112)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.setClasspath(TestingEnvironment.java:1048)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.addEntry(TestingEnvironment.java:285)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.addExternalJars(TestingEnvironment.java:265)
at org.eclipse.jdt.core.tests.builder.TestingEnvironment.addExternalJars(TestingEnvironment.java:253)
at org.eclipse.jdt.core.tests.builder.BasicBuildTests.testUnusedImport(BasicBuildTests.java:318)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:692)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:319)
at org.eclipse.test.CoreTestApplication.runTests(CoreTestApplication.java:36)
at org.eclipse.test.CoreTestApplication.run(CoreTestApplication.java:32)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
at org.eclipse.core.launcher.Main.main(Main.java:34)
T1 is the main thread
Concurrent read in thread T29 (locks held: {})
----> at org.eclipse.jdt.internal.core.JavaProject.getRawClasspath(JavaProject.java:1932)
at org.eclipse.jdt.internal.core.search.indexing.IndexAllProject.execute(IndexAllProject.java:65)
at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:405)
T29 is created by T1
at org.eclipse.jdt.internal.core.search.processing.JobManager.reset(JobManager.java:331)
}}}
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet. As such, we're closing this bug. If you have further information on the current state of the bug, please add it and reopen this bug. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant. -- The automated Eclipse Genie. |
Here is the race report given by a dynamic race detector: Data race on field org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.preferences: {{{ Concurrent write in thread T1 (locks held: {Monitor@40866d39}) ----> at org.eclipse.jdt.internal.core.JavaProject.getEclipsePreferences(JavaProject.java:1492) at org.eclipse.jdt.internal.core.JavaProject.getOption(JavaProject.java:1657) at org.eclipse.jdt.internal.core.ClasspathEntry.validateClasspath(ClasspathEntry.java:1747) at org.eclipse.jdt.internal.core.SetClasspathOperation.verify(SetClasspathOperation.java:118) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:783) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3097) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3059) at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3112) at org.eclipse.jdt.testplugin.JavaProjectHelper.createJavaProject(JavaProjectHelper.java:166) at org.eclipse.jdt.text.tests.CompilationUnitDocumentProviderTest.setupProject(CompilationUnitDocumentProviderTest.java:54) at org.eclipse.jdt.text.tests.CompilationUnitDocumentProviderTest.test2(CompilationUnitDocumentProviderTest.java:86) at junit.framework.TestCase.runTest(TestCase.java:176) at junit.framework.TestCase.runBare(TestCase.java:141) at junit.framework.TestResult$1.protect(TestResult.java:122) at junit.framework.TestResult.runProtected(TestResult.java:142) at junit.framework.TestResult.run(TestResult.java:125) at junit.framework.TestCase.run(TestCase.java:129) at junit.framework.TestSuite.runTest(TestSuite.java:252) at junit.framework.TestSuite.run(TestSuite.java:247) at junit.framework.TestSuite.runTest(TestSuite.java:252) at junit.framework.TestSuite.run(TestSuite.java:247) at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:692) at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:319) at org.eclipse.test.UITestApplication$2.run(UITestApplication.java:197) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) - locked Monitor@40866d39 at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:131) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3794) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3433) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:157) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139) at org.eclipse.test.UITestApplication.runApplication(UITestApplication.java:140) at org.eclipse.test.UITestApplication.run(UITestApplication.java:62) at org.eclipse.test.UITestApplication.start(UITestApplication.java:212) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608) at org.eclipse.equinox.launcher.Main.run(Main.java:1515) at org.eclipse.equinox.launcher.Main.main(Main.java:1488) at org.eclipse.core.launcher.Main.main(Main.java:34) T1 is the main thread Concurrent write in thread T30 (locks held: {}) ----> at org.eclipse.jdt.internal.core.JavaProject.getEclipsePreferences(JavaProject.java:1492) at org.eclipse.jdt.internal.core.JavaProject.getOption(JavaProject.java:1657) at org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath(JavaModelManager.java:1041) at org.eclipse.jdt.internal.core.JavaModelManager.createCompilationUnitFrom(JavaModelManager.java:979) at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:898) at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:862) at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:3208) at org.eclipse.jdt.internal.ui.BuildpathIndicatorLabelDecorator.getOverlay(BuildpathIndicatorLabelDecorator.java:46) at org.eclipse.jdt.internal.ui.BuildpathIndicatorLabelDecorator.decorate(BuildpathIndicatorLabelDecorator.java:32) at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:260) at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:83) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:367) at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:349) at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:367) at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:327) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) T30 is created by T29 at org.eclipse.core.internal.jobs.WorkerPool.jobQueued(WorkerPool.java:148) }}} Two threads are writing to this field concurrently.