Bug 339021 - Endless loop in TextMergeViewer.internalGetNextDiff
Summary: Endless loop in TextMergeViewer.internalGetNextDiff
Status: CLOSED WONTFIX
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Compare (show other bugs)
Version: 3.7   Edit
Hardware: PC Windows 7
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Platform-Compare-Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords: needinfo
: 509626 (view as bug list)
Depends on:
Blocks:
 
Reported: 2011-03-05 18:22 EST by Markus Keller CLA
Modified: 2020-03-14 01:48 EDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2011-03-05 18:22:58 EST
N20110303-2000

Endless loop in TextMergeViewer.internalGetNextDiff.

I can't tell exactly what steps I did, but here's what I remember:
- opened WorkingSetModel.java in Java editor
- opened incoming change in WorkingSetModel.java in compare editor
- in Synchronize view, chose "Update"
- selected the Java editor
- performed some manual changes
- performed Undo a few times to get rid of the changes
- was puzzled that the Java editor was still dirty
- closed the Java editor
=> this brought me back to the compare editor, where the endless loop below was entered

I had to kill the Eclipse process.


"main" prio=6 tid=0x003db000 nid=0x18b0 runnable [0x0047e000]
   java.lang.Thread.State: RUNNABLE
        at org.eclipse.compare.internal.merge.DocumentMerger.findNext(DocumentMerger.java:1347)
        at org.eclipse.compare.internal.merge.DocumentMerger.findNext(DocumentMerger.java:1339)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.findNext(TextMergeViewer.java:4382)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.internalGetNextDiff(TextMergeViewer.java:4251)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.getNextVisibleDiff(TextMergeViewer.java:4235)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.isNavigationButtonEnabled(TextMergeViewer.java:3370)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateControls(TextMergeViewer.java:3354)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.setCurrentDiff(TextMergeViewer.java:4436)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.setCurrentDiff(TextMergeViewer.java:4395)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.handleSelectionChanged(TextMergeViewer.java:3249)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.access$58(TextMergeViewer.java:3245)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer$25.keyPressed(TextMergeViewer.java:2455)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:167)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
        at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
        at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1100)
        at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1809)
        at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:4864)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:4543)
        at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4970)
        at org.eclipse.swt.internal.win32.OS.$$YJP$$CallWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.CallWindowProcW(OS.java)
        at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2418)
        at org.eclipse.swt.internal.BidiUtil.windowProc(BidiUtil.java:639)
        at org.eclipse.swt.internal.win32.OS.$$YJP$$DispatchMessageW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DispatchMessageW(OS.java)
        at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2524)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3737)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
Comment 1 Tomasz Zarna CLA 2011-03-18 06:27:19 EDT
I guess you were comparing 1.41 vs 1.42 of WorkingSetModel.java, right? I'm trying to increase my chances of reproducing the issue...
Comment 2 Markus Keller CLA 2011-03-18 06:52:07 EDT
> I guess you were comparing 1.41 vs 1.42 of WorkingSetModel.java, right?
Yes, 1.41 in Workspace and 1.42 incoming.
Comment 3 Tomasz Zarna CLA 2011-03-21 11:21:17 EDT
(In reply to comment #0)
> I can't tell exactly what steps I did, but here's what I remember:
> - opened WorkingSetModel.java in Java editor
> - opened incoming change in WorkingSetModel.java in compare editor
> - in Synchronize view, chose "Update"

This should close the compare editor, so I guess what you actually did was "Copy all non-conflicting changes", could that be true?

> - selected the Java editor
> - performed some manual changes
> - performed Undo a few times to get rid of the changes
> - was puzzled that the Java editor was still dirty

Have you done any saves until this point?

> - closed the Java editor

If the editor was dirty should be asked to save it or not, do you remember what option did you choose?

> => this brought me back to the compare editor, where the endless loop below was
> entered
Comment 4 Markus Keller CLA 2011-03-22 15:01:58 EDT
(In reply to comment #3)
Sorry, it was already a bit late, and I really can't tell the steps more exactly any more. It's well possible that I used "Copy all non-conflicting changes". I don't think I performed Save. That's why I was puzzled that the Java editor was still dirty after I undid everything.

Looking at the code, I don't see recent changes in that area. Reducing severity, since this doesn't seem to be new nor a common problem.

I could not reproduce the problem. I guess the best way to proceed would be to analyze the loops carefully and make sure they terminate eventually.
Comment 5 Dani Megert CLA 2016-12-22 09:03:05 EST
*** Bug 509626 has been marked as a duplicate of this bug. ***
Comment 6 Eclipse Genie CLA 2020-03-14 01:48:16 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet. As such, we're closing this bug.

If you have further information on the current state of the bug, please add it and reopen this bug. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.