2009-08-04

Firefox Upgrade Broke Eclipse?

Doesn't sound likely? That was what i thought, and so failed to draw a link until further diagnosis and web-surfing.

i had been using Ubuntu 9.04, and had Firefox 3.0 and Eclipse 3.4 Ganymede running on the same machine without any apparent problem (but of course, having Firefox and Eclipse on the same machine is such a common combination). One day, i decided to upgrade to Firefox 3.5, and after that, well, actually, Eclipse still worked without a hitch - or so i thought.

The problem only surfaced when i tried to open a new empty workspace in Eclipse. It froze with an empty dialog box after the splash screen. Being eager to press on with some development work, i simply copied an existing workspace and cleaned out the existing projects to get a "new" workspace. Without further information, linking this issue to the Firefox upgrade was the last thing on my mind, and since a workaround was available (copying existing workspaces), i just put this problem aside.

What got me more intrigued, was after i installed Fedora 11. Yes, the frozen empty dialog box surfaced again when i tried to start a new workspace. Fedora 11 comes installed with Firefox 3.5, but, that was again not in my consideration. (Unless one has some knowledge about the internal workings of Eclipse, who would have linked Firefox and Eclipse?) However, i got curious and decided to investigate further.

So i ran Eclipse (on a new workspace) with some debugging arguments:

$ eclipse -debug -consoleLog

and got something like this (together with the frozen dialog box):

!ENTRY org.eclipse.ui.workbench 4 0 2009-08-04 23:27:24.066
!MESSAGE Widget disposed too early!
!STACK 0
java.lang.RuntimeException: Widget disposed too early!
    at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:171)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:117)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    ...
    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)

!ENTRY org.eclipse.osgi 4 0 2009-08-04 23:27:24.089
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: XPCOM error -2147467262
    at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1638)
    at org.eclipse.swt.browser.Mozilla.setText(Mozilla.java:1861)
    at org.eclipse.swt.browser.Browser.setText(Browser.java:737)
    ...
    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)


It was only upon seeing the terms "Mozilla" and "browser" peppered throughout the second stack trace that i started to think that it might have something to do with Firefox (but it still did not occur to me about the upgrade). i recalled also, that there was some introduction screen whenever Eclipse is started in a new workspace, but still wondered what it had to do with Firefox.

So i did a search and found that the problem was due to an API change in a later version of xulrunner (https://bugzilla.redhat.com/show_bug.cgi?id=483832).

The page also contains a simple-enough workaround:

Create a file (e.g. noWelcomeScreen.ini) containing the line:

org.eclipse.ui/showIntro=false

and when starting eclipse, include the -pluginCustomization argument:

$ eclipse -pluginCustomization noWelcomeScreen.ini

No need to copy existing workspaces anymore. HTH.