Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 323725

Summary: Invalid property name: Windows when comparing big word document
Product: [Eclipse Project] Platform Reporter: Krzysztof Kazmierczyk <kazm>
Component: CompareAssignee: Platform-Compare-Inbox <platform-compare-inbox>
Status: RESOLVED NOT_ECLIPSE QA Contact:
Severity: normal    
Priority: P3 CC: kazm, Szymon.Brandys
Version: 3.6.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Krzysztof Kazmierczyk CLA 2010-08-26 11:54:15 EDT
Build Identifier: 20100617-1415

org.eclipse.core.runtime.CoreException: Invalid property name: Windows.
	at org.eclipse.compare.internal.win32.WordMergeViewer.openComparison(WordMergeViewer.java:355)
	at org.eclipse.compare.internal.win32.WordMergeViewer.setInput(WordMergeViewer.java:386)
	at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:276)
	at org.eclipse.compare.internal.CompareContentViewerSwitchingPane.setInput(CompareContentViewerSwitchingPane.java:158)
	at org.eclipse.compare.CompareEditorInput.internalSetContentPaneInput(CompareEditorInput.java:844)
	at org.eclipse.compare.CompareEditorInput.access$8(CompareEditorInput.java:842)
	at org.eclipse.compare.CompareEditorInput$11.run(CompareEditorInput.java:778)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.compare.CompareEditorInput.feed1(CompareEditorInput.java:772)
	at org.eclipse.compare.CompareEditorInput.feedInput(CompareEditorInput.java:750)
	at org.eclipse.compare.CompareEditorInput.createContents(CompareEditorInput.java:554)
	at org.eclipse.compare.internal.CompareEditor.createCompareControl(CompareEditor.java:456)
	at org.eclipse.compare.internal.CompareEditor.access$6(CompareEditor.java:422)
	at org.eclipse.compare.internal.CompareEditor$3.run(CompareEditor.java:378)
	at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:164)
	at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:158)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	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:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	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:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: org.eclipse.swt.SWTException: Invalid property name: Windows.
	at org.eclipse.compare.internal.win32.WordComparison.property(WordComparison.java:147)
	at org.eclipse.compare.internal.win32.WordComparison.getVariantProperty(WordComparison.java:68)
	at org.eclipse.compare.internal.win32.WordComparison.getAutomationProperty(WordComparison.java:76)
	at org.eclipse.compare.internal.win32.WordComparison.setDocumentVisible(WordComparison.java:274)
	at org.eclipse.compare.internal.win32.WordComparison.createWorkingCopy(WordComparison.java:201)
	at org.eclipse.compare.internal.win32.WordMergeViewer.openComparison(WordMergeViewer.java:334)
	... 40 more

I think the cause is the same as we could not save document in bug 311011.

Reproducible: Always

Steps to Reproduce:
1. Checkout the testdocs project from
:pserver:anonymous@kaziktest.cvs.sourceforge.net:/cvsroot/kaziktest
2. Compare hello2.doc between versions 1.9 and 1.10
Comment 1 Krzysztof Kazmierczyk CLA 2010-09-27 04:07:39 EDT
The problem happens in org.eclipse.compare.internal.win32.WordComparison.setDocumentVisible(OleAutomation, boolean, OleAutomation). 

It seems, that workaround similar to that used in bug 311011 does not help in this case.

I can try else to use Windows API method Application.CompareDocuments instead of Document.Compare but I will require several modifications and Application.CompareDocuments may produce new bugs. Anyway I tried to reproduce this bug on bunch of different documents and the problem happens only for this one. Moreover the document which causes error were not any real existing document but was created specially for testing purposes by copying hundred times bugzilla webpage content into word document.

Szymon, shall we try to fix this problem using Application.CompareDocuments or we can close it as NOT_ECLIPSE for now?
Comment 2 Szymon Brandys CLA 2010-09-28 05:33:50 EDT
Well, I think we should at least try to fix the problem on our side. Do you have the patch?
Comment 3 Krzysztof Kazmierczyk CLA 2010-09-29 07:08:05 EDT
(In reply to comment #2)
> Well, I think we should at least try to fix the problem on our side. Do you
> have the patch?

When I was trying to write the patch, I discovered that Word 2003 API does not contain Application.compareDocuments (http://msdn.microsoft.com/en-us/library/aa221371%28office.11%29.aspx). This method seems to be available since Word 2007.

In that case, currently I do not have any idea how to solve this bug in Eclipse :(
Comment 4 Krzysztof Kazmierczyk CLA 2011-10-14 08:43:02 EDT
This is rather Active X issue rather than Eclipse. It should be closed as there is no easy way to fix it.