Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-ui-dev] A dead lock situation

Hi,
I was doing unit test development on 2.1.1, and found an interesting
deadlock situation.

The two deadlocked threads have the following stack trace.

It seemed that the main thread hold a lock on the PluginClassLoader and
wants a lock on PluginDescriptor, while the other hold lock on
PluginDescriptor and wants the lock on the ClassLoader.

jml



Thread [main] (Suspended)
 PluginDescriptor.isPluginActivated() line: 758
 PluginClassLoader.internalFindClassParentsSelf(String, boolean,
DelegatingURLClassLoader, boolean) line: 164
 
PluginClassLoader(DelegatingURLClassLoader).findClassParentsSelf(String,
boolean, DelegatingURLClassLoader, boolean) line: 485
 PluginClassLoader(DelegatingURLClassLoader).loadClass(String, boolean,
DelegatingURLClassLoader, Vector, boolean) line: 882
 DelegatingURLClassLoader.access$0(DelegatingURLClassLoader, String,
boolean, DelegatingURLClassLoader, Vector, boolean) line: 876
 DelegatingURLClassLoader$DelegateLoader.loadClass(String,
DelegatingURLClassLoader, DelegatingURLClassLoader, Vector) line: 90
 
PluginClassLoader(DelegatingURLClassLoader).findClassPrerequisites(Strin
g, DelegatingURLClassLoader, Vector) line: 554
 PluginClassLoader(DelegatingURLClassLoader).loadClass(String, boolean,
DelegatingURLClassLoader, Vector, boolean) line: 890
 PluginClassLoader(DelegatingURLClassLoader).loadClass(String, boolean)
line: 862
 PluginClassLoader(ClassLoader).loadClass(String) line: 255 [local
variables unavailable]
 PluginClassLoader(ClassLoader).loadClassInternal(String) line: 315
[local variables unavailable]
 Class.forName0(String, boolean, ClassLoader) line: not available
[native method]
 Class.forName(String) line: 140 [local variables unavailable]
 EclipseContextTestSuite.<init>() line: 34
 EclipseContextTestSuite.suite() line: 27
 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]
 NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 [local
variables unavailable]
 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 [local
variables unavailable]
 Method.invoke(Object, Object[]) line: 324 [local variables unavailable]
 EclipseTestRunner.getTest(String) line: 238
 EclipseTestRunner.<init>(JUnitTest, String, boolean, boolean) line: 200
 EclipseTestRunner.main(String[]) line: 184
 UITestApplication.runTests(String[]) line: 39
 UITestApplication.runEventLoop(Window$IExceptionHandler) line: 33
 UITestApplication(Workbench).run(Object) line: 1385
 InternalBootLoader.run(String, URL, String, String[], Runnable) line:
845
 BootLoader.run(String, URL, String, String[], Runnable) line: 461
 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]
 NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 [local
variables unavailable]
 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 [local
variables unavailable]
 Method.invoke(Object, Object[]) line: 324 [local variables unavailable]
 Main.basicRun(String[]) line: 291
 Main.run(String[]) line: 747
 Main.main(String[]) line: 583

 
 
 
Thread [Thread-1] (Suspended)
 Class.getDeclaredConstructors0(boolean) line: not available [native
method]
 Class.privateGetDeclaredConstructors(boolean) line: 1590 [local
variables unavailable]
 Class.getConstructor0(Class[], int) line: 1762 [local variables
unavailable]
 Class.getConstructor(Class[]) line: 1002 [local variables unavailable]
 PluginDescriptor.internalDoPluginActivation() line: 701
 PluginDescriptor.doPluginActivation() line: 188
 PluginDescriptor.getPlugin() line: 301
 Workbench$15.run() line: 1325
 InternalPlatform.run(ISafeRunnable) line: 889
 Platform.run(ISafeRunnable) line: 413
 Workbench$14.run() line: 1334
 Thread.run() line: 536 [local variables unavailable]



Back to the top