Community
Participate
Working Groups
Step to reproduce (Reproducible with Sirius 5.1.0 NEON): 1. Create a maven project and Sirius model files in it. 2. Open the Sirius graphical editor. 3. Execute maven eclipse:eclipse while the editor is still open. 4. As soon as the maven execution finishes (and the external change event has been processed by the Sirius framework), the following NPE is thrown when refreshing the diagram: Caused by: java.lang.NullPointerException at org.eclipse.gef.editparts.AbstractGraphicalEditPart.setLayoutConstraint(AbstractGraphicalEditPart.java:929) at org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart.refreshBounds(ShapeEditPart.java:197) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart.refreshBounds(AbstractDiagramElementContainerEditPart.java:405) at org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart.refreshVisuals(ShapeEditPart.java:205) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart.refreshVisuals(AbstractDiagramElementContainerEditPart.java:373) at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:725) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:644) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$3(GraphicalEditPart.java:1) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$3.run(GraphicalEditPart.java:861) at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.refresh(GraphicalEditPart.java:851) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart.refresh(AbstractDiagramElementContainerEditPart.java:228) at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:253) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223) at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:212) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.addChild(GraphicalEditPart.java:1319) at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:781) at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:726) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:644) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$3(GraphicalEditPart.java:1) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$3.run(GraphicalEditPart.java:861) at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.refresh(GraphicalEditPart.java:851) at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:253) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223) at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:212) at org.eclipse.gef.editparts.SimpleRootEditPart.setContents(SimpleRootEditPart.java:105) at org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(AbstractEditPartViewer.java:617) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer.setContents(DiagramGraphicalViewer.java:352) at org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(AbstractEditPartViewer.java:626) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.initializeGraphicalViewerContents(DiagramEditor.java:872) at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.initializeGraphicalViewerContents(DDiagramEditorImpl.java:1481) at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.doSetInput(DiagramDocumentEditor.java:483) at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.setInput(DiagramDocumentEditor.java:427) at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.setInput(DDiagramEditorImpl.java:1784) at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorSessionListenerDelegate.run(DDiagramEditorSessionListenerDelegate.java:126) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182) ... 24 more !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.591 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.591 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.908 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.908 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.921 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.922 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.943 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.944 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.960 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:11.961 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:12.025 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:12.026 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:12.074 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode !ENTRY org.eclipse.gmf.runtime.draw2d.ui 2 2 2018-01-16 15:27:12.074 !MESSAGE MapModeUtil#getMapMode(IFigure fig) fig parameter must be attached to a parent - using default MapMode
Hi Tamas, Could you join a use case to reproduce? Thanks. Regards,
When trying to reproduce the problem, I got another exception when external resources has been changed. Maybe this helps you further localizing the problem: !ENTRY org.eclipse.ui 4 0 2018-01-26 13:55:34.094 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.util.ConcurrentModificationException) at org.eclipse.swt.SWT.error(SWT.java:4533) at org.eclipse.swt.SWT.error(SWT.java:4448) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4211) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3827) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138) 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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610) at org.eclipse.equinox.launcher.Main.run(Main.java:1519) at org.eclipse.equinox.launcher.Main.main(Main.java:1492) Caused by: java.util.ConcurrentModificationException at org.eclipse.emf.common.util.ArrayDelegatingEList$EIterator.checkModCount(ArrayDelegatingEList.java:887) at org.eclipse.emf.common.util.AbstractEList$EIterator.doNext(AbstractEList.java:712) at org.eclipse.emf.common.util.AbstractEList$EIterator.next(AbstractEList.java:692) at java.util.AbstractCollection.addAll(AbstractCollection.java:343) at java.util.LinkedHashSet.<init>(LinkedHashSet.java:169) at com.google.common.collect.Sets.newLinkedHashSet(Sets.java:380) at org.eclipse.sirius.business.internal.session.SessionTransientAttachment.getSessionTransientAttachement(SessionTransientAttachment.java:72) at org.eclipse.sirius.business.internal.session.SessionManagerImpl.getSession(SessionManagerImpl.java:196) at org.eclipse.sirius.business.api.query.EObjectQuery.getSession(EObjectQuery.java:257) at org.eclipse.sirius.diagram.ui.edit.internal.part.DiagramElementEditPartOperation.removeNavigateDecoratorRefresher(DiagramElementEditPartOperation.java:343) at org.eclipse.sirius.diagram.ui.edit.internal.part.DiagramElementEditPartOperation.deactivate(DiagramElementEditPartOperation.java:372) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractBorderedDiagramElementEditPart.deactivate(AbstractBorderedDiagramElementEditPart.java:207) at org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeEditPart.deactivate(DNodeEditPart.java:107) at org.eclipse.gef.editparts.AbstractEditPart.deactivate(AbstractEditPart.java:293) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.deactivate(AbstractGraphicalEditPart.java:354) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.deactivate(GraphicalEditPart.java:315) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDDiagramEditPart.deactivate(AbstractDDiagramEditPart.java:383) at org.eclipse.sirius.diagram.ui.internal.edit.parts.DDiagramEditPart.deactivate(DDiagramEditPart.java:98) at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorSessionListenerDelegate.run(DDiagramEditorSessionListenerDelegate.java:126) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182) ... 24 more
Thanks for the feedback. We've planned to work on the general issue of stability with regard to resources/files life-cycle for Sirius 6 and later (bug #470457 is the top-level ticket). This particular issue was added to the scope of concrete issues to look at when we'll tackle this particular subject. I can't guarantee it will get fixed in 6.0, but it will be analysed as part of this effort.