IvyDE
  1. IvyDE
  2. IVYDE-341

PreferenceInitializer - SWTException: Invalid thread access

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.2.0.beta1, 2.2.0.final
    • Fix Version/s: 2.2.0.final
    • Component/s: None
    • Labels:
      None
    • Environment:

      Windows 7 Enterprise 64bit.

      Eclipse IDE for Java EE Developers, Juno 4.2.2, 32 bit
      Oracle JDK "1.7.0_17" 32bit

      Eclipse IDE for Java EE Developers, Juno 4.2.2, 64 bit
      Oracle JDK "1.7.0_15" 64bit

      Description

      IvyDE leads to a corrupt workspace. Eclipse Juno will not start the workspace any more. Juno still starts with other workspaces.

      I'm using Eclipse for my daily work and I got this error about two or three times a week.
      First I used 2.2.0 beta1, then I switched to the trunk version (trunk from 2013-03-12 10:00), same error occurs.

      As a manual workaround (which is of course very annoying) you can

      • de-install IvyDE manually (i.e. remove it from eclipse's plugins / features directory)
      • start eclipse, re-install IvyDE

      The following Fix applied to the svn trunk (from 2013-03-12 10:00) PreferenceInitializer#initializeDefaultPreferences works for me.
      After installing the fixed IvyDE (starting eclipse with a new empty workspace, uninstalling the trunk version, installing the fixed trunk version) I could successfully start my workspace again.

       
      public void initializeDefaultPreferences() {
          Display.getDefault().syncExec( new Runnable() {
              public void run() {
                  IPreferenceStore store = IvyPlugin.getDefault().getPreferenceStore();
                  store.setDefault(PreferenceConstants.P_BOOLEAN, true);
      
                  ...
                  ...
      
                  store.setDefault(PreferenceConstants.ERROR_POPUP, DEFAULT_ERROR_POPUP);
              }
          });
      }
      

      ---- ---- ---- ---- BEGIN <workspace>/.metadata/.log ---- ---- ---- ----
      ...
      ...

      !ENTRY org.apache.ivyde.eclipse 1 0 2013-03-15 11:25:08.298
      !MESSAGE starting IvyDE plugin

      !ENTRY org.eclipse.equinox.preferences 4 2 2013-03-15 11:25:08.376
      !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.equinox.preferences".
      !STACK 0
      java.lang.ExceptionInInitializerError
      at org.apache.ivyde.eclipse.ui.preferences.PreferenceInitializer.initializeDefaultPreferences(PreferenceInitializer.java:193)
      at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:300)
      at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
      at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.runInitializer(PreferenceServiceRegistryHelper.java:303)
      at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.applyRuntimeDefaults(PreferenceServiceRegistryHelper.java:131)
      at org.eclipse.core.internal.preferences.PreferencesService.applyRuntimeDefaults(PreferencesService.java:368)
      at org.eclipse.core.internal.preferences.DefaultPreferences.applyRuntimeDefaults(DefaultPreferences.java:166)
      at org.eclipse.core.internal.preferences.DefaultPreferences.load(DefaultPreferences.java:237)
      at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:409)
      at org.eclipse.core.internal.preferences.EclipsePreferences.internalNode(EclipsePreferences.java:663)
      at org.eclipse.core.internal.preferences.EclipsePreferences.node(EclipsePreferences.java:805)
      at org.eclipse.core.internal.preferences.AbstractScope.getNode(AbstractScope.java:38)
      at org.eclipse.core.runtime.preferences.DefaultScope.getNode(DefaultScope.java:76)
      at org.eclipse.ui.preferences.ScopedPreferenceStore.getDefaultPreferences(ScopedPreferenceStore.java:250)
      at org.eclipse.ui.preferences.ScopedPreferenceStore.getPreferenceNodes(ScopedPreferenceStore.java:285)
      at org.eclipse.ui.preferences.ScopedPreferenceStore.internalGet(ScopedPreferenceStore.java:475)
      at org.eclipse.ui.preferences.ScopedPreferenceStore.getInt(ScopedPreferenceStore.java:501)
      at org.apache.ivyde.eclipse.ui.preferences.IvyDEPreferenceStoreHelper.getIvyConsoleLogLevel(IvyDEPreferenceStoreHelper.java:206)
      at org.apache.ivyde.eclipse.ui.console.IvyConsole.<init>(IvyConsole.java:78)
      at org.apache.ivyde.eclipse.IvyPlugin.start(IvyPlugin.java:156)
      at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
      at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
      at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
      at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
      at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
      at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
      at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:469)
      at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
      at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:395)
      at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:464)
      at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
      at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
      at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
      at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340)
      at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)
      at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
      at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
      at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
      at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
      at org.eclipse.jdt.core.JavaCore.computeClasspathContainerInitializer(JavaCore.java:3175)
      at org.eclipse.jdt.core.JavaCore.getClasspathContainerInitializer(JavaCore.java:3151)
      at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2824)
      at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1878)
      at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:3128)
      at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2691)
      at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2855)
      at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1960)
      at org.eclipse.jdt.internal.core.DeltaProcessor.createExternalArchiveDelta(DeltaProcessor.java:954)
      at org.eclipse.jdt.internal.core.DeltaProcessor.checkExternalArchiveChanges(DeltaProcessor.java:794)
      at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2023)
      at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:470)
      at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:291)
      at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
      at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285)
      at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:267)
      at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:390)
      at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1698)
      at com.serena.eclipse.dimensions.internal.team.core.DMRepositoryProvider.ignoreFilesLeftByDMCommandLineClient(Unknown Source)
      at com.serena.eclipse.dimensions.internal.team.core.DMTeamPlugin$1.runInWorkspace(Unknown Source)
      at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
      at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
      Caused by: org.eclipse.swt.SWTException: Invalid thread access
      at org.eclipse.swt.SWT.error(SWT.java:4361)
      at org.eclipse.swt.SWT.error(SWT.java:4276)
      at org.eclipse.swt.SWT.error(SWT.java:4247)
      at org.eclipse.swt.widgets.Display.error(Display.java:1258)
      at org.eclipse.swt.widgets.Display.checkDevice(Display.java:764)
      at org.eclipse.swt.widgets.Display.getSystemFont(Display.java:2459)
      at org.eclipse.jface.preference.PreferenceConverter.<clinit>(PreferenceConverter.java:84)
      ... 66 more

      !ENTRY org.apache.ivyde.eclipse 1 0 2013-03-15 11:25:08.391
      !MESSAGE IvyDE plugin started

      !ENTRY org.eclipse.osgi 4 0 2013-03-15 11:25:09.968
      !MESSAGE Application error
      !STACK 1
      org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.jface.preference.PreferenceConverter)
      at org.eclipse.swt.SWT.error(SWT.java:4361)
      at org.eclipse.swt.SWT.error(SWT.java:4276)
      at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
      at org.eclipse.swt.widgets.Display.setSynchronizer(Display.java:4613)
      at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2460)
      at org.eclipse.ui.internal.Workbench.access$7(Workbench.java:2441)
      at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:586)
      at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
      at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
      at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
      at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
      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:353)
      at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
      at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
      at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
      Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.jface.preference.PreferenceConverter
      at org.apache.ivyde.eclipse.ui.editors.xml.ColorManager.rebind(ColorManager.java:107)
      at org.apache.ivyde.eclipse.ui.editors.xml.ColorManager.refreshFromStore(ColorManager.java:98)
      at org.apache.ivyde.eclipse.IvyPlugin$1.run(IvyPlugin.java:133)
      at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
      at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
      ... 20 more

      ...
      ...

      !ENTRY org.eclipse.core.jobs 4 2 2013-03-15 11:25:55.243
      !MESSAGE An internal error occurred during: "IvyDE resolve".
      !STACK 0
      java.lang.NullPointerException
      at org.apache.ivyde.eclipse.IvyPlugin.getPreferenceStoreHelper(IvyPlugin.java:417)
      at org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainerConfiguration.getInheritedSettingsSetup(IvyClasspathContainerConfiguration.java:210)
      at org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainerState.getIvySettingsPath(IvyClasspathContainerState.java:45)
      at org.apache.ivyde.eclipse.CachedIvy.doGetIvy(CachedIvy.java:128)
      at org.apache.ivyde.eclipse.CachedIvy.getIvy(CachedIvy.java:120)
      at org.apache.ivyde.eclipse.resolve.IvyResolveJob.doRun(IvyResolveJob.java:145)
      at org.apache.ivyde.eclipse.resolve.IvyResolveJob.run(IvyResolveJob.java:85)
      at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

      !ENTRY org.eclipse.core.resources 4 566 2013-03-15 11:25:55.321
      !MESSAGE Workspace was not properly initialized or has already shutdown.

      !ENTRY org.eclipse.core.jobs 4 1 2013-03-15 11:25:55.321
      !MESSAGE Worker thread ended job: Refreshing workspace(12), but still holds rule: ThreadJob(Refreshing workspace(12),[P/riad])

      ---- ---- ---- ---- END <workspace>/.metadata/.log ---- ---- ---- ----

      Cheers
      Bernd

        Activity

        Hide
        Nicolas Lalevée added a comment -

        The suggested fix made it worst. Recently my Eclipse wouldn't start anymore whereas it did fine before. The fix is to be done in the IvyPlugin, just like for IVYDE-313. Fixed in trunk, your feedback would be appreciated.

        Show
        Nicolas Lalevée added a comment - The suggested fix made it worst. Recently my Eclipse wouldn't start anymore whereas it did fine before. The fix is to be done in the IvyPlugin, just like for IVYDE-313 . Fixed in trunk, your feedback would be appreciated.
        Hide
        Nicolas Lalevée added a comment -

        I have fixed the trunk as you suggested. Thanks !

        Show
        Nicolas Lalevée added a comment - I have fixed the trunk as you suggested. Thanks !

          People

          • Assignee:
            Nicolas Lalevée
            Reporter:
            Bernd Kurz
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development