Bug 221583 - Widget is disposed error in the .log file
Summary: Widget is disposed error in the .log file
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Compare (show other bugs)
Version: 3.4   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.5 M6   Edit
Assignee: Tomasz Zarna CLA
QA Contact:
URL:
Whiteboard: hasPatch
Keywords:
: 260512 260894 (view as bug list)
Depends on:
Blocks:
 
Reported: 2008-03-05 15:49 EST by Olivier Thomann CLA
Modified: 2009-05-13 10:11 EDT (History)
2 users (show)

See Also:


Attachments
Quick fix (970 bytes, patch)
2008-03-06 05:33 EST, Tomasz Zarna CLA
no flags Details | Diff
mylyn/context/zip (15.45 KB, application/octet-stream)
2008-03-06 05:33 EST, Tomasz Zarna CLA
no flags Details
Fix #2 (1.65 KB, patch)
2009-03-02 06:11 EST, Tomasz Zarna CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2008-03-05 15:49:06 EST
Using I20080304-1113, I got this error in the .log file. No steps to reproduce.
Looks like bug 176447, but it was fixed for 3.3.

org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:3756)
at org.eclipse.swt.SWT.error(SWT.java:3674)
at org.eclipse.swt.SWT.error(SWT.java:3645)
at org.eclipse.swt.widgets.Widget.error(Widget.java:462)
at org.eclipse.swt.widgets.Widget.getDisplay(Widget.java:577)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updatePresentation(TextMergeViewer.java:1387)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:4433)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:2361)
at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:715)
at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.refresh(ContentMergeViewer.java:690)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer$ContributorInfo.resetDocument(TextMergeViewer.java:797)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer$ContributorInfo.elementDeleted(TextMergeViewer.java:786)
at org.eclipse.ui.editors.text.TextFileDocumentProvider$FileBufferListener.underlyingFileDeleted(TextFileDocumentProvider.java:330)
at org.eclipse.core.internal.filebuffers.TextFileBufferManager$7.run(TextFileBufferManager.java:717)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.filebuffers.TextFileBufferManager.fireUnderlyingFileDeleted(TextFileBufferManager.java:715)
at org.eclipse.core.internal.filebuffers.ResourceFileBuffer.handleFileDeleted(ResourceFileBuffer.java:466)
at org.eclipse.core.internal.filebuffers.ResourceFileBuffer$4.execute(ResourceFileBuffer.java:169)
at org.eclipse.core.internal.filebuffers.ResourceFileBuffer$SafeFileChange.run(ResourceFileBuffer.java:86)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:130)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3749)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3374)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2365)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2329)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2195)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:475)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:470)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
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:362)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Comment 1 Tomasz Zarna CLA 2008-03-06 05:33:17 EST
Created attachment 91737 [details]
Quick fix

It looks like we will need another checkState kind of check. To be honest, I don't know how is it related to bug 176447, but the stacktraces look identical to me too. I would appreciate any steps or clues why this might happen. Anyway, here is my proposition of a quick fix.
Comment 2 Tomasz Zarna CLA 2008-03-06 05:33:21 EST
Created attachment 91738 [details]
mylyn/context/zip
Comment 3 Tomasz Zarna CLA 2009-03-02 06:11:42 EST
Created attachment 127149 [details]
Fix #2

Here's another place that might bevulnerable to the same problem. This has been found on bug 263935.
Comment 4 Pawel Pogorzelski CLA 2009-03-02 10:20:22 EST
Steps to reproduce the problem through debug:

Host:
1. Add a breakpoint B1 at TextMergeViewer.handleDispose()
2. Add a breakpoint B2 at RangeDifference.findRanges(IProgressMonitor, IRangeComparator, IRangeComparator, IRangeComparator)

Guest:
3. Add a file A.java that doesn't exist in a CVS repository
4. Synchronize with CVS
5. You got one change outgoing (A.java addition) 
6. Open compare editor on that addition
7. Select "Override and Update" from context menu for the change

Host:
8. You got hits on B1 and B2
9. First let the tread stopped at B1 go
10. Wait at least 50 ms ;)
11. Let the thread stopped at B2 go

Guest:
12. An exception appeared in the Error Log
Comment 5 Pawel Pogorzelski CLA 2009-03-02 10:21:17 EST
Fix attached by Tomasz in comment 3 resolves the problem.
Comment 6 Tomasz Zarna CLA 2009-03-02 10:23:44 EST
*** Bug 260894 has been marked as a duplicate of this bug. ***
Comment 7 Tomasz Zarna CLA 2009-03-02 10:31:30 EST
Please note that "Quick fix" is no longer valid since signature of updatePresentation(Display) has been changed to updatePresentation() (no params).
Comment 8 Tomasz Zarna CLA 2009-03-02 10:35:45 EST
"Fix #2" released to HEAD, available in builds >N20090301-2000. Thanks for extra debugging Pawel!
Comment 9 Tomasz Zarna CLA 2009-05-13 10:11:41 EDT
*** Bug 260512 has been marked as a duplicate of this bug. ***