Community
Participate
Working Groups
Created attachment 283394 [details] InteractionSample.zip This problem has been detected during the validation of Sirius 6.3.2 but the problem has been partially reproducted at least in Sirius 6.3.0. The problem is not systematic but one of this 3 problems have been observed several times with the scenario : * NullPointerException: see stack below * ConcurrentModificationException: see stack below * VSM reload without stack (reproducted also in Sirius 6.3.0): There is no stack but only these messages in Error Log view * Warning: Resource was re-loaded while it was being unloaded, probably because of unintentional proxy resolution: platform:/resource/org.eclipse.sirius.sample.interactions.design/description/interaction.odesign * Error: Read-only transaction rolled back * Error: Transaction aborted due to concurrent write java.lang.NullPointerException at org.eclipse.gmf.runtime.diagram.ui.internal.figures.BorderItemContainerFigure.getViewportBounds(BorderItemContainerFigure.java:278) at org.eclipse.gmf.runtime.diagram.ui.internal.figures.BorderItemContainerFigure.getVisibleExtendedBounds(BorderItemContainerFigure.java:262) at org.eclipse.gmf.runtime.diagram.ui.internal.figures.BorderItemContainerFigure.paintClientArea(BorderItemContainerFigure.java:78) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart$1.paint(AbstractDiagramElementContainerEditPart.java:537) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.ScalableFreeformLayeredPane.paintClientArea(ScalableFreeformLayeredPane.java:60) at org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.ScalableFreeformLayeredPane.paintClientArea(ScalableFreeformLayeredPane.java:82) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.parts.Thumbnail$ThumbnailUpdater.run(Thumbnail.java:195) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3919) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3550) at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:168) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:370) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:469) at org.eclipse.sirius.editor.tools.internal.presentation.CustomSiriusEditor.doSave(CustomSiriusEditor.java:511) java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Unknown Source) at java.util.ArrayList$Itr.next(Unknown Source) at org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemsAwareFreeFormLayer.getBounds(BorderItemsAwareFreeFormLayer.java:163) at org.eclipse.draw2d.Figure.getClientArea(Figure.java:616) at org.eclipse.draw2d.Figure.getClientArea(Figure.java:627) at org.eclipse.gmf.runtime.diagram.ui.internal.figures.BorderItemContainerFigure.getViewportBounds(BorderItemContainerFigure.java:277) at org.eclipse.gmf.runtime.diagram.ui.internal.figures.BorderItemContainerFigure.getVisibleExtendedBounds(BorderItemContainerFigure.java:262) at org.eclipse.gmf.runtime.diagram.ui.internal.figures.BorderItemContainerFigure.paintClientArea(BorderItemContainerFigure.java:78) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeEditPart$3.paint(DNodeEditPart.java:213) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.Figure.paintChildren(Figure.java:1170) at org.eclipse.draw2d.Figure.paintClientArea(Figure.java:1205) at org.eclipse.draw2d.ScalableFreeformLayeredPane.paintClientArea(ScalableFreeformLayeredPane.java:60) at org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.ScalableFreeformLayeredPane.paintClientArea(ScalableFreeformLayeredPane.java:82) at org.eclipse.draw2d.Figure.paint(Figure.java:1120) at org.eclipse.draw2d.parts.Thumbnail$ThumbnailUpdater.run(Thumbnail.java:195) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3919) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3550) at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:168) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:370) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:469) at org.eclipse.sirius.editor.tools.internal.presentation.CustomSiriusEditor.doSave(CustomSiriusEditor.java:511) Steps to reproduce: * Import the project "org.eclipse.sirius.sample.interactions.design" from the source code of Sirius * Import the project "Interaction" from InteractionSample.zip * Open the VSM * Open the diagram * In the VSM * Expand "Interaction Use Interaction Use" * Delete its style * Add a new Parallelogram style * Expand "Combined Fragment Combined Fragment" * Delete its style * Add a new Parallelogram style * Save * "Expected": Error has been reported in Error Log view. If it is not the case, you can refresh the diagram, modify again the style and save (until you have the problem). This problem is maybe linked to the ResourceSetListener refreshZorder in SequenceDiagramEditPart. It has been observed in the following stack (that finally throws a ThumbnailUpdater): SiriusDiagramGraphicalViewer$ToggleUpdateManager.sendUpdateRequest() line: 170 SiriusDiagramGraphicalViewer$ToggleUpdateManager(DeferredUpdateManager).queueWork() line: 247 SiriusDiagramGraphicalViewer$ToggleUpdateManager.queueWork() line: 270 SiriusDiagramGraphicalViewer$ToggleUpdateManager(DeferredUpdateManager).addInvalidFigure(IFigure) line: 133 LightweightSystem$RootFigure(Figure).revalidate() line: 1451 FreeformViewport(Figure).revalidate() line: 1453 FreeformHelper.invalidate() line: 75 FreeformHelper.notifyFreeformExtentChanged() line: 83 RenderedDiagramRootEditPart$DiagramRenderedScalableFreeformLayeredPane(FreeformLayeredPane).fireExtentChanged() line: 52 FreeformHelper.invalidate() line: 73 FreeformHelper.notifyFreeformExtentChanged() line: 83 FreeformLayeredPane.fireExtentChanged() line: 52 FreeformHelper.invalidate() line: 73 FreeformHelper.notifyFreeformExtentChanged() line: 83 BorderItemsAwareFreeFormLayer(FreeformLayer).fireExtentChanged() line: 45 FreeformHelper.invalidate() line: 73 FreeformHelper.notifyFreeformExtentChanged() line: 83 DiagramEditPart$1(FreeformLayer).fireExtentChanged() line: 45 BorderItemsAwareFreeFormLayer$BorderItemAwareFreeFormHelper.invalidate() line: 123 BorderItemsAwareFreeFormLayer$BorderItemAwareFreeFormHelper.unhookChild(IFigure) line: 148 DiagramEditPart$1(BorderItemsAwareFreeFormLayer).remove(IFigure) line: 206 SequenceDiagramEditPart(AbstractGraphicalEditPart).removeChildVisual(EditPart) line: 792 SequenceDiagramEditPart(AbstractEditPart).reorderChild(EditPart, int) line: 962 SequenceDiagramEditPart(AbstractGraphicalEditPart).reorderChild(EditPart, int) line: 878 SequenceDiagramEditPart.reorderChild(EditPart, int) line: 288 SequenceZOrderingRefresher.moveParts(Class<IGraphicalEditPart>, boolean, Function<IGraphicalEditPart,Integer>) line: 103 SequenceZOrderingRefresher.moveInteractionUsesToFront() line: 65 SequenceZOrderingRefresher.run() line: 55 SequenceDiagramEditPart$1.resourceSetChanged(ResourceSetChangeEvent) line: 90 TransactionalEditingDomainImpl$1.run() line: 781 TransactionalEditingDomainImpl.runExclusive(Runnable) line: 328 TransactionalEditingDomainImpl.postcommit(InternalTransaction) line: 771 TransactionalEditingDomainImpl.deactivate(InternalTransaction) line: 543 TransactionImpl.close() line: 712 ... DescriptionResourceImpl(BasicNotifierImpl).eNotify(Notification) line: 424 DescriptionResourceImpl(ResourceImpl).unload() line: 1728 ViewpointRegistryImpl.unloadInExistingSessions(String, boolean) line: 913 ViewpointRegistryImpl.unloadInExistingSessions(IFile, boolean) line: 902 ViewpointRegistryImpl.reloadFile(IFile) line: 892 ViewpointRegistryImpl.invalidateCacheAndReloadFile(IFile) line: 821 ViewpointRegistryImpl.refreshWorkspaceComponents(IResourceDelta) line: 763 ViewpointRegistryImpl.refreshWorkspaceComponents(IResourceDelta) line: 777 ViewpointRegistryImpl.refreshWorkspaceComponents(IResourceDelta) line: 777 ViewpointRegistryImpl.refreshWorkspaceComponents(IResourceDelta) line: 777 ViewpointRegistryImpl.resourceChanged(IResourceChangeEvent) line: 725