Community
Participate
Working Groups
The following deadlock was encountered during workspace start in an adopter product. The issue seems to be that JDT is holding resource locks when notifying listeners of changes to the java type system. The solution is to start a thread to do property refresh instead of doing the refresh inline. "org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor" daemon prio=2 tid=0x04440400 nid=0x1cb8 waiting for monitor entry [0x063fe000] java.lang.Thread.State: BLOCKED (on object monitor) at oracle.eclipse.tools.adf.controller.model.internal.InputParameterDefinition.refreshProperty(InputParameterDefinition.java:421) - waiting to lock <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:444) at org.eclipse.sapphire.java.jdt.internal.JdtJavaTypeReferenceService$1.elementChanged(JdtJavaTypeReferenceService.java:73) at org.eclipse.jdt.internal.core.DeltaProcessor$4.run(DeltaProcessor.java:1670) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1660) at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1494) at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1470) at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2082) at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:470) at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:291) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149) at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:395) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1530) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2353) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:793) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1880) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:2798) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2674) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2838) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1943) at org.eclipse.jdt.internal.core.JavaProject.buildStructure(JavaProject.java:461) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:258) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:518) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:255) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:241) at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:196) at org.eclipse.jdt.internal.core.JavaProject.getPackageFragmentRoots(JavaProject.java:1831) at org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities.getSourceContainers(J2EEProjectUtilities.java:810) at org.eclipse.jst.j2ee.internal.validation.ProjectValidationHelper.getCachedSourceContainers(ProjectValidationHelper.java:76) at org.eclipse.jst.j2ee.internal.validation.ProjectValidationHelper.getSourceContainers(ProjectValidationHelper.java:87) at org.eclipse.wst.validation.internal.ValidatorMetaData.checkIfValidSourceFile(ValidatorMetaData.java:341) at org.eclipse.wst.validation.internal.ValidatorMetaData.isApplicableTo(ValidatorMetaData.java:311) at org.eclipse.wst.validation.internal.ValidatorMetaData.isApplicableTo(ValidatorMetaData.java:302) at org.eclipse.wst.validation.internal.ValidatorMetaData.isApplicableTo(ValidatorMetaData.java:287) at org.eclipse.wst.validation.Validator$V1.shouldValidate(Validator.java:734) at org.eclipse.wst.validation.Validator.shouldValidate(Validator.java:320) at org.eclipse.wst.validation.Friend.shouldValidate(Friend.java:50) at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:800) at org.eclipse.wst.validation.internal.DisabledValidatorManager$DisabledValidationFinder.findDisabledValidatorsFor(DisabledValidatorManager.java:109) at org.eclipse.wst.validation.internal.DisabledValidatorManager.getDisabledValidatorsFor(DisabledValidatorManager.java:62) at org.eclipse.wst.validation.ValidationFramework.getDisabledValidatorsFor(ValidationFramework.java:238) at org.eclipse.wst.sse.ui.internal.reconcile.validator.ValidatorStrategy.reconcile(ValidatorStrategy.java:205) at org.eclipse.wst.sse.ui.internal.reconcile.DocumentRegionProcessor.process(DocumentRegionProcessor.java:321) at org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor.process(StructuredRegionProcessor.java:258) at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor$BackgroundThread.run(DirtyRegionProcessor.java:697) "main" prio=6 tid=0x009c6c00 nid=0x1f10 in Object.wait() [0x0013e000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x07055940> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:39) - locked <0x07055940> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:176) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:110) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:84) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:119) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2282) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2339) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:793) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1880) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:2798) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2674) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2838) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1943) at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:636) at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:705) at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:669) at org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragmentRoots(JavaProject.java:1413) at org.eclipse.jdt.internal.core.JavaProjectElementInfo.getProjectCache(JavaProjectElementInfo.java:206) at org.eclipse.jdt.internal.core.JavaProjectElementInfo.newNameLookup(JavaProjectElementInfo.java:290) at org.eclipse.jdt.internal.core.JavaProject.newNameLookup(JavaProject.java:2310) at org.eclipse.jdt.internal.core.JavaProject.newNameLookup(JavaProject.java:2320) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1342) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1249) at org.eclipse.sapphire.java.jdt.internal.JdtJavaTypeReferenceService.resolve(JdtJavaTypeReferenceService.java:92) at org.eclipse.sapphire.java.JavaTypeReferenceService.resolve(JavaTypeReferenceService.java:1) at org.eclipse.sapphire.modeling.ReferenceValue.resolve(ReferenceValue.java:49) at org.eclipse.sapphire.java.internal.JavaTypeValidationService.validate(JavaTypeValidationService.java:98) at org.eclipse.sapphire.modeling.Value.initValidation(Value.java:74) at org.eclipse.sapphire.modeling.Value.init(Value.java:60) at oracle.eclipse.tools.adf.controller.model.internal.ManagedBean.refreshProperty(ManagedBean.java:486) - locked <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450) at oracle.eclipse.tools.adf.controller.model.internal.ManagedBean.getManagedBeanClass(ManagedBean.java:201) - locked <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at oracle.eclipse.tools.adf.controller.model.internal.ManagedBean.read(ManagedBean.java:633) at org.eclipse.sapphire.modeling.ModelElement.read(ModelElement.java:233) at org.eclipse.sapphire.modeling.ModelElement.refreshValidationResult(ModelElement.java:880) at org.eclipse.sapphire.modeling.ModelElement.validate(ModelElement.java:862) at org.eclipse.sapphire.modeling.ModelElementList.refreshValidationResult(ModelElementList.java:212) at org.eclipse.sapphire.modeling.ModelElementList.refresh(ModelElementList.java:189) at org.eclipse.sapphire.modeling.ModelElementList.init(ModelElementList.java:63) at oracle.eclipse.tools.adf.controller.model.internal.TaskFlow.refreshProperty(TaskFlow.java:1135) - locked <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450) at oracle.eclipse.tools.adf.controller.model.internal.TaskFlow.getManagedBeans(TaskFlow.java:406) - locked <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at oracle.eclipse.tools.adf.controller.model.internal.TaskFlow.read(TaskFlow.java:1580) at org.eclipse.sapphire.modeling.ModelElement.read(ModelElement.java:254) at org.eclipse.sapphire.modeling.ModelElement.refreshValidationResult(ModelElement.java:884) at org.eclipse.sapphire.modeling.ModelElement.validate(ModelElement.java:862) at org.eclipse.sapphire.modeling.ModelElementHandle.refreshValidationState(ModelElementHandle.java:285) at org.eclipse.sapphire.modeling.ModelElementHandle.refreshInternal(ModelElementHandle.java:249) - locked <0x12bd5068> (a org.eclipse.sapphire.modeling.ModelElementHandle) at org.eclipse.sapphire.modeling.ModelElementHandle.init(ModelElementHandle.java:50) at oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile.refreshProperty(TaskFlowFile.java:130) - locked <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457) at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450) at oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile.getTaskFlow(TaskFlowFile.java:83) - locked <0x12bdc500> (a oracle.eclipse.tools.adf.controller.model.internal.TaskFlowFile) at oracle.eclipse.tools.adf.controller.ui.editor.TaskFlowEditor.createModel(TaskFlowEditor.java:67) at org.eclipse.sapphire.ui.SapphireEditor.addPages(SapphireEditor.java:356) at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138) at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348) at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271) at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1459) at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:972) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) - locked <0x12611468> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1595) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) - locked <0x11f4a1d0> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
Fixed in 0.3.1 and 0.4 streams.
Fix verified in adopter product.