| Summary: | java.lang.Exception: ECLIPSE_CLASSLOADER_GENERATED_EXCEPTION | ||
|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | Jean-Michel Lemieux <jean-michel_lemieux> |
| Component: | Resources | Assignee: | Platform-Resources-Inbox <platform-resources-inbox> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | gunnar, john.arthorne, pascal |
| Version: | 3.0 | ||
| Target Milestone: | 3.0 RC1 | ||
| Hardware: | PC | ||
| OS: | Windows XP | ||
| Whiteboard: | |||
|
Description
Jean-Michel Lemieux
This indicates a concurrent access to resources. Moving to core, cc'ing John. This is going to be a problem. ResourcesPlugin.startup() forks a job to initialize the auto-refresh. It is quite common to fork threads during a plugin's startup method. Many plugins do this to get around synchronization issues with startup() (i.e., you can't load executatable extensions during startup, so a thread is forked to do it instead). Build I20040506 I got a lot more of those exceptions. Mostly they occure after a crash (hard kill of Eclipse because of a deadlock). Maybe the message can provide more hints to the problems? However from comment 2 I assume that this is problem in the class loader and the exception should not be thrown at all? !ENTRY org.eclipse.osgi Mai 11, 2004 09:15:12.687 !MESSAGE Threads "Thread[Worker-0,5,main]" and "main" are concurrently trying to start bundle org.eclipse.core.resources. Thread "Thread[Worker-0,5,main]" was trying to load "org.eclipse.core.internal.localstore.IsSynchronizedVisitor" which now may have inconsistent values. !STACK 0 java.lang.Exception: Generated exception. at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass (EclipseClassLoader.java:104) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass (BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:400) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass (AbstractClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at org.eclipse.core.internal.localstore.FileSystemResourceManager.isSynchronized (FileSystemResourceManager.java:366) at org.eclipse.core.internal.resources.Resource.isSynchronized (Resource.java:1105) at org.eclipse.core.internal.refresh.PollingMonitor.poll (PollingMonitor.java:141) at org.eclipse.core.internal.refresh.PollingMonitor.run (PollingMonitor.java:105) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) !ENTRY org.eclipse.osgi Mai 11, 2004 09:15:17.687 !MESSAGE Threads "Thread[Worker-0,5,main]" and "main" are concurrently trying to start bundle org.eclipse.core.resources. Thread "Thread[Worker-0,5,main]" was trying to load "org.eclipse.core.internal.localstore.CollectSyncStatusVisitor" which now may have inconsistent values. !STACK 0 java.lang.Exception: Generated exception. at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass (EclipseClassLoader.java:104) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass (BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:400) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass (AbstractClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at org.eclipse.osgi.framework.internal.defaultadaptor.DefaultClassLoader.defineCla ss(DefaultClassLoader.java:294) at org.eclipse.core.runtime.adaptor.EclipseClassLoader.defineClass (EclipseClassLoader.java:205) at org.eclipse.osgi.framework.internal.defaultadaptor.DefaultClassLoader.findClass Impl(DefaultClassLoader.java:283) at org.eclipse.osgi.framework.internal.defaultadaptor.DefaultClassLoader.findClass (DefaultClassLoader.java:172) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.findLocalClass (AbstractClassLoader.java:220) at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass (EclipseClassLoader.java:106) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass (BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:400) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass (AbstractClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at org.eclipse.core.internal.localstore.FileSystemResourceManager.isSynchronized (FileSystemResourceManager.java:366) at org.eclipse.core.internal.resources.Resource.isSynchronized (Resource.java:1105) at org.eclipse.core.internal.refresh.PollingMonitor.poll (PollingMonitor.java:141) at org.eclipse.core.internal.refresh.PollingMonitor.run (PollingMonitor.java:105) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) !ENTRY org.eclipse.osgi Mai 11, 2004 09:15:32.968 !MESSAGE Threads "Thread[Worker-3,5,main]" and "Worker-0" are concurrently trying to start bundle net.sourceforge.eclipseccase. Thread "Thread[Worker- 3,5,main]" was trying to load "net.sourceforge.eclipseccase.StateCacheFactory$3" which now may have inconsistent values. !STACK 0 java.lang.Exception: Generated exception. at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass (EclipseClassLoader.java:104) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass (BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:400) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass (AbstractClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at net.sourceforge.eclipseccase.StateCacheFactory.isAffectedBy (StateCacheFactory.java:494) at net.sourceforge.eclipseccase.StateCacheFactory.resourceChanged (StateCacheFactory.java:401) at org.eclipse.core.internal.events.NotificationManager$2.run (NotificationManager.java:268) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:604) at org.eclipse.core.runtime.Platform.run(Platform.java:545) at org.eclipse.core.internal.events.NotificationManager.notify (NotificationManager.java:260) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges (NotificationManager.java:148) at org.eclipse.core.internal.resources.Workspace.broadcastChanges (Workspace.java:159) at org.eclipse.core.internal.resources.Workspace.endOperation (Workspace.java:884) at org.eclipse.core.internal.events.AutoBuildJob.doBuild (AutoBuildJob.java:157) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:189) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) !ENTRY org.eclipse.osgi Mai 11, 2004 09:15:37.968 !MESSAGE Threads "Thread[Worker-3,5,main]" and "Worker-0" are concurrently trying to start bundle net.sourceforge.eclipseccase. Thread "Thread[Worker- 3,5,main]" was trying to load "net.sourceforge.eclipseccase.StateCacheFactory$2" which now may have inconsistent values. !STACK 0 java.lang.Exception: Generated exception. at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass (EclipseClassLoader.java:104) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass (BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass (BundleLoader.java:400) at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass (AbstractClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at net.sourceforge.eclipseccase.StateCacheFactory.resourceChanged (StateCacheFactory.java:403) at org.eclipse.core.internal.events.NotificationManager$2.run (NotificationManager.java:268) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:604) at org.eclipse.core.runtime.Platform.run(Platform.java:545) at org.eclipse.core.internal.events.NotificationManager.notify (NotificationManager.java:260) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges (NotificationManager.java:148) at org.eclipse.core.internal.resources.Workspace.broadcastChanges (Workspace.java:159) at org.eclipse.core.internal.resources.Workspace.endOperation (Workspace.java:884) at org.eclipse.core.internal.events.AutoBuildJob.doBuild (AutoBuildJob.java:157) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:189) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66) This kind of message indicates race conditions to startup a plugin. It is therefore not a problem in the classloader but in the plugin that is indicated. What you get here is as much information as you can get, and represents all the information available to the runtime at this moment. The stack trace is generated so the people who are "pointed out" in the messages can get more context on what is going on. The problem is reported by the classloader but is actually a contention in the activation of the resource plugin. *** Bug 64035 has been marked as a duplicate of this bug. *** *** Bug 64036 has been marked as a duplicate of this bug. *** Fixed. This was caused by the autorefresh polling job starting concurrently with the resources plugin startup. Note that this is not actually a problem - there is no reason why other threads cannot run concurrently with the resources plugin startup sequence. To avoid the exception in the log, I have added a ten second delay to the first execution of the polling job. This will make it much less likely that it will conflict with the resources plugin startup. |