Bug 45528

Summary: StackOverflowError on save from compare with workspace and remote
Product: [Eclipse Project] Platform Reporter: Darin Swanson <Darin_Swanson>
Component: CompareAssignee: Andre Weinand <andre_weinand>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3    
Version: 3.0   
Target Milestone: 3.0 RC3   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Darin Swanson CLA 2003-10-24 14:32:45 EDT
From the synchronize view, double clicked on a resource with outgoing changes 
(a properties file).

Selected a deleted property in the Property Compare top view, double clicked.
Used Copy current changed from Right to Left
Context menu in left text compare pane, Save

Stack overflow...sorry the stack trace is not complete. I had to retrieve 
using a quick ctrl break as it was not provided in the .log file.
Will attach stace.

  at org.eclipse.compare.BufferedContent.setContent(BufferedContent.java:70)
        at 
org.eclipse.team.internal.ui.sync.compare.LocalResourceTypedElement.setContent
(LocalResourceTypedElement.java:53)
        at org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator.save
(PropertiesStructureCreator.java:151)
        at 
org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator$1.nodeChanged
(PropertiesStructureCreator.java:129)
        at 
org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator$PropertyNode.rep
lace(PropertiesStructureCreator.java:88)
        at org.eclipse.compare.structuremergeviewer.DiffNode.copy
(DiffNode.java:302)
        at 
org.eclipse.compare.internal.MergeViewerContentProvider.saveLeftContent
(MergeViewerContentProvider.java:99)
        at 
org.eclipse.compare.contentmergeviewer.ContentMergeViewer.saveContent
(ContentMergeViewer.java:967)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.save
(ContentMergeViewer.java:948)
        at org.eclipse.compare.CompareEditorInput.flushViewer
(CompareEditorInput.java:747)
        at org.eclipse.compare.CompareEditorInput.saveChanges
(CompareEditorInput.java:738)
        at 
org.eclipse.team.internal.ui.sync.compare.SyncInfoCompareInput.saveChanges
(SyncInfoCompareInput.java:177)
        at 
org.eclipse.team.internal.ui.sync.compare.SyncInfoCompareInput$1.contentChanged
(SyncInfoCompareInput.java:74)
        at org.eclipse.compare.BufferedContent.fireContentChanged
(BufferedContent.java:125)
        at org.eclipse.compare.BufferedContent.setContent
(BufferedContent.java:70)
        at 
org.eclipse.team.internal.ui.sync.compare.LocalResourceTypedElement.setContent
(LocalResourceTypedElement.java:53
        at org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator.save
(PropertiesStructureCreator.java:151)
        at 
org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator$1.nodeChanged
(PropertiesStructureCreator.java:129)
        at 
org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator$PropertyNode.rep
lace(PropertiesStructureCreator.java:88)
        at org.eclipse.compare.structuremergeviewer.DiffNode.copy
(DiffNode.java:302)
        at 
org.eclipse.compare.internal.MergeViewerContentProvider.saveLeftContent
(MergeViewerContentProvider.java:99)
        at 
org.eclipse.compare.contentmergeviewer.ContentMergeViewer.saveContent
(ContentMergeViewer.java:967)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.save
(ContentMergeViewer.java:948)
        at org.eclipse.compare.CompareEditorInput.flushViewer
(CompareEditorInput.java:747)
        at org.eclipse.compare.CompareEditorInput.saveChanges
(CompareEditorInput.java:738)
        at 
org.eclipse.team.internal.ui.sync.compare.SyncInfoCompareInput.saveChanges
(SyncInfoCompareInput.java:177)
        at 
org.eclipse.team.internal.ui.sync.compare.SyncInfoCompareInput$1.contentChanged
(SyncInfoCompareInput.java:74)
        at org.eclipse.compare.BufferedContent.fireContentChanged
(BufferedContent.java:125)
        at org.eclipse.compare.BufferedContent.setContent
(BufferedContent.java:70)
        at 
org.eclipse.team.internal.ui.sync.compare.LocalResourceTypedElement.setContent
(LocalResourceTypedElement.java:53)
        at org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator.save
(PropertiesStructureCreator.java:151)
        at 
org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator$1.nodeChanged
(PropertiesStructureCreator.java:129)
        at 
org.eclipse.jdt.internal.ui.compare.PropertiesStructureCreator$PropertyNode.rep
lace(PropertiesStructureCreator.java:88)
        at org.eclipse.compare.structuremergeviewer.DiffNode.copy
(DiffNode.java:302)
        at 
org.eclipse.compare.internal.MergeViewerContentProvider.saveLeftContent
(MergeViewerContentProvider.java:99)
        at 
org.eclipse.compare.contentmergeviewer.ContentMergeViewer.saveContent
(ContentMergeViewer.java:967)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.save
(ContentMergeViewer.java:948)
        at org.eclipse.compare.CompareEditorInput.flushViewer
(CompareEditorInput.java:747)
        at org.eclipse.compare.CompareEditorInput.saveChanges
(CompareEditorInput.java:738)
Comment 1 Darin Swanson CLA 2003-10-24 14:33:43 EDT
On I20031023 and as you can see the stack trace is inline :-)
Comment 2 Jean-Michel Lemieux CLA 2003-11-17 15:54:27 EST
I can't dupe with 20031113. I've tried your scenario plus some others and 
wasn't able to reproduce. Also, this is a fairly common use case for which we 
haven't seen other bug reports. I'm going to close but let me know if this 
happens again.
Comment 3 Darin Swanson CLA 2003-11-17 16:00:00 EST
Reproduced on I2003113
Same test case.
Comment 4 Darin Swanson CLA 2003-11-17 16:01:32 EST
Did you wish to Sametime so I could walk you through the test case?
Comment 5 Jean-Michel Lemieux CLA 2003-11-17 16:24:27 EST
Failure case requires a property to be deleted then a copy left to right, next 
the save. I was trying property changes and additions which work.
Comment 6 Jean-Michel Lemieux CLA 2003-11-18 15:01:43 EST
Traced this and found that the infinite recursion is caused by the property 
content merge viewer that fails to change it's state to un-dirty and thinks 
that it needs a flush even after flushing. This behavior is ok with the java 
merge viewer.

To reproduce you can open a compare editor from the sync view for 
a .properties file. Ensure that the file has an outgoing deletion. Next, 
select the deletion in the structure compare then copy right to left. Next in 
the context menu of the text merge viewer select save. 
Comment 7 Andre Weinand CLA 2004-06-16 09:05:32 EDT
We forgot to apply fix for a similar problem in Java source (bug #34745) to the Java property case.


*** This bug has been marked as a duplicate of 34745 ***