Community
Participate
Working Groups
Build ID: 20071213-1700 Steps To Reproduce: 1. Open Ecore Diagram editor 2. Create EClass 3. Create EAttribute 4. Select EAttribute, click on it once more, open inplace editor; select EClass 5. Repeat step "4" many times Eclipse UI freeze. More information: Thread [main] (Suspended) Display(Device).isDisposed() line: 681 Display.checkDevice() line: 698 Display.getSystemFont() line: 2183 FigureCanvas(Control).defaultFont() line: 92 FigureCanvas(Control).internal_new_GC(GCData) line: 2894 GC.gtk_new(Drawable, GCData) line: 193 FigureCanvas(Control).gtk_expose_event(long, long) line: 2646 FigureCanvas(Composite).gtk_expose_event(long, long) line: 667 FigureCanvas(Canvas).gtk_expose_event(long, long) line: 155 FigureCanvas(Widget).windowProc(long, long, long) line: 1494 FigureCanvas(Control).windowProc(long, long, long) line: 4429 Display.windowProc(long, long, long) line: 4026 OS._gtk_main_do_event(long) line: not available [native method] OS.gtk_main_do_event(long) line: 5672 Display.eventProc(long, long) line: 1163 OS._gdk_window_process_updates(long, boolean) line: not available [native method] OS.gdk_window_process_updates(long, boolean) line: 3629 FigureCanvas(Control).update(boolean, boolean) line: 4388 FigureCanvas(Control).update() line: 4379 NativeGraphicsSource.getGraphics(Rectangle) line: 43 DiagramGraphicalViewer$ToggleUpdateManager(DeferredUpdateManager).getGraphics(Rectangle) line: 136 DiagramGraphicalViewer$ToggleUpdateManager(DeferredUpdateManager).repairDamage() line: 286 DiagramGraphicalViewer$ToggleUpdateManager(DeferredUpdateManager).performUpdate() line: 179 DiagramGraphicalViewer$ToggleUpdateManager.performUpdate() line: 114 DeferredUpdateManager$UpdateRequest.run() line: 46 RunnableLock.run() line: 35 UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 130 Display.runAsyncMessages(boolean) line: 3312 Display.readAndDispatch() line: 2985 Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2381 Workbench.runUI() line: 2345 Workbench.access$4(Workbench) line: 2211 Workbench$4.run() line: 473 Realm.runWithDefault(Realm, Runnable) line: 288 Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 468 PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149 IDEApplication.start(IApplicationContext) line: 106 EclipseAppHandle.run(Object) line: 193 EclipseAppLauncher.runApplication(Object) line: 106 EclipseAppLauncher.start(Object) line: 76 EclipseStarter.run(Object) line: 362 EclipseStarter.run(String[], Runnable) line: 175 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: 585 Main.invokeFramework(String[], URL[]) line: 561 Main.basicRun(String[]) line: 501 Main.run(String[]) line: 1239 Main.main(String[]) line: 1215 Thread [Thread-54] (Suspended) Object.wait(long) line: not available [native method] Lock(Object).wait() line: 474 Lock.lock() line: 34 OS.GDK_DISPLAY() line: 1069 Display.post(Event) line: 2853 TextDirectEditManager$4.run() line: 600
Created attachment 97968 [details] fixed sendMouseClick() method similar request https://bugs.eclipse.org/bugs/show_bug.cgi?id=204333 attached patch contains workaround of this problem
Critical for Linux users, easy to reproduce on generated diagrams
I can duplicate this issue in Linux with was few as two clicks on the Ecore editor. The workbench is completely hung and never returns. I tried to duplicate this issue with our IBM application that also makes use of similar list compartments and attributes. I cannot get the application to hang, but it does go into "direct edit mode never starts again". I.e. I click many times and it never goes into direct edit mode. The only way to get into edit mode again is to F2 or go to another window and back again. I am going to test a little more, but I am concerned putting this code in late into GMF 2.1. I do not want to risk breaking other platforms that are not reporting this issue. This particular code snippet (thread creation) has been there since GMF 1.0, but we did changed the code to use GEF label in GMF 2.1. Steve / Dusko, can you try this issue and let me know what you think?
(In reply to comment #3) > I tried to duplicate this issue with our IBM application that also makes use of > similar list compartments and attributes. I cannot get the application to hang, > but it does go into "direct edit mode never starts again". I.e. I click many > times and it never goes into direct edit mode. The only way to get into edit > mode again is to F2 or go to another window and back again. I can duplicate this issue both with and without the patch on Windows on the Ecore diagram as well. Take a class "EClass" with two attributes EAttribute1 and EAttribute2. Three clicks on EAttribute1 brings you into direct edit mode (one to select and double click into edit mode). Then three clicks on EAttribute2 brings you into direct edit mode. If you go too fast with your triple click on EAttribute2, you will get into a state when can never get into direct edit mode on EAttribute2 unless you select something else and back again first, or F2. It would seem that this issue is very hard to do with the patch, so I think we are safe to +1 the patch. Abraham is testing for a second opinion.
I tested on Linux with the Ecore diagram and the UI hang never happens. As well, the "direct edit mode never starts again" rarely happens (you need to click about 50 times or so). I would say that this fix is safe to put in unless IBM thinks it will break stuff.
Committed to HEAD. We need approval before we can release into RC4.
In RC4
[target cleanup] 2.1 RC was the original target milestone for this bug
[GMF Restructure] Bug 319140 : product GMF and component Runtime Diagram was the original product and component for this bug