Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 345128 - Rare deadlock situation when starting Riena based application
Summary: Rare deadlock situation when starting Riena based application
Status: RESOLVED FIXED
Alias: None
Product: Riena
Classification: RT
Component: communication (show other bugs)
Version: 2.1.0   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 3.0.0   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-09 07:55 EDT by Stefan Liebig CLA
Modified: 2011-06-15 05:11 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Liebig CLA 2011-05-09 07:55:55 EDT
The dump says:
	org.eclipse.equinox.launcher.Main at localhost:62704	
		Thread Group [system]	
			Thread Group [main]	
				Thread [main] (Suspended)	
					owns: ArrayList<E>  (id=229)	
					owns: WirePuller  (id=157)	
					owns: HashMap<K,V>  (id=230)	
					owns: EclipseAppHandle  (id=193)	
					owns: DefaultClassLoader  (id=131)	
						waited by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
							owns: ArrayList<E>  (id=232)	
							owns: HashMap<K,V>  (id=195)	
							owns: ArrayList<E>  (id=233)	
							owns: WirePuller  (id=234)	
					waiting for: HashMap<K,V>  (id=195)	
						owned by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
							waiting for: DefaultClassLoader  (id=131)	
								owned by: Thread [main] (Suspended)	
									waiting for: HashMap<K,V>  (id=195)	
										owned by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
											waiting for: DefaultClassLoader  (id=131)	
												owned by: Thread [main] (Suspended)	
													waiting for: HashMap<K,V>  (id=195)	
														owned by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
					RemoteServiceRegistry.registerService(IRemoteServiceReference, BundleContext) line: 73	
					RemoteServiceFactory.createAndRegisterProxy(RemoteServiceDescription, BundleContext) line: 167	
					RemoteServiceFactory.createAndRegisterProxy(Class<?>, String, String, BundleContext) line: 131	
					ProxyFactory.andStart(BundleContext) line: 68	
					Activator(BetriebsartAwareActivator).registerRemoteProxy(Class<?>, String) line: 174	
					Activator.createOnlinePartnerService(BundleContext) line: 45	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					Activator(BetriebsartAwareActivator).registerBetriebsartAbhaengigeServices(BundleContext, BetriebsartStatus) line: 123	
					Activator(BetriebsartAwareActivator).updateBetriebsartAbhaengigeServices(BetriebsartStatus) line: 94	
					Activator(BetriebsartAwareActivator).updateBetriebsartAbhaengigeServices() line: 89	
					Activator(BetriebsartAwareActivator).bind(IStatusRegistry) line: 207	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					FilterInjector(ServiceInjector).invoke(Method, Object) line: 448	
					FilterInjector(ServiceInjector).invokeBindMethod(ServiceReference) line: 412	
					FilterInjector.doBind(ServiceReference) line: 58	
					FilterInjector.doStart() line: 34	
					FilterInjector(ServiceInjector).andStart(BundleContext) line: 133	
					WirePuller.injectServiceInto(Object, Method) line: 188	
					WirePuller.injectIntoAnnotatedMethods(Object, Class<?>) line: 145	
					WirePuller.wire(Class<?>) line: 137	
					WirePuller.wire(Class<?>) line: 132	
					WirePuller.andStart(BundleContext) line: 96	
					Activator(BetriebsartAwareActivator).start(BundleContext) line: 67	
					Activator.start(BundleContext) line: 28	
					BundleContextImpl$1.run() line: 711	
					AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]	
					BundleContextImpl.startActivator(BundleActivator) line: 702	
					BundleContextImpl.start() line: 683	
					BundleHost.startWorker(int) line: 381	
					BundleHost(AbstractBundle).start(int) line: 299	
					SecureAction.start(Bundle, int) line: 440	
					BundleLoader.setLazyTrigger() line: 268	
					EclipseLazyStarter.postFindLocalClass(String, Class, ClasspathManager) line: 107	
					ClasspathManager.findLocalClass(String) line: 460	
					DefaultClassLoader.findLocalClass(String) line: 216	
					BundleLoader.findLocalClass(String) line: 400	
					SingleSourcePackage.loadClass(String) line: 35	
					BundleLoader.findClassInternal(String, boolean, ClassLoader) line: 473	
					BundleLoader.findClass(String, boolean) line: 429	
					BundleLoader.findClass(String) line: 417	
					DefaultClassLoader.loadClass(String, boolean) line: 107	
					DefaultClassLoader(ClassLoader).loadClass(String) line: 248	
					ZusaetzlichePartnerSubmodulesAssembler.<clinit>() line: 40	
					NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
					NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
					DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
					Constructor<T>.newInstance(Object...) line: 513	
					Class<T>.newInstance0() line: 355	
					Class<T>.newInstance() line: 308	
					EquinoxRegistryStrategy(RegistryStrategyOSGI).createExecutableExtension(RegistryContributor, String, String) line: 184	
					ExtensionRegistry.createExecutableExtension(RegistryContributor, String, String) line: 905	
					ConfigurationElement.createExecutableExtension(String) line: 243	
					ConfigurationElementHandle.createExecutableExtension(String) line: 55	
					InterfaceBeanHandler.invoke(Method, Object[], InterfaceBeanHandler$MethodKind) line: 186	
					InterfaceBeanHandler.invoke(Object, Method, Object[]) line: 82	
					$Proxy20.createNavigationAssembler() line: not available	
					AssembliesConverter.convert(INavigationAssemblyExtension) line: 49	
					SwtExtensionWorkareaDefinitionRegistry.register(INavigationAssemblyExtension) line: 54	
					SwtExtensionWorkareaDefinitionRegistry.update(INavigationAssemblyExtension[]) line: 41	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					ExtensionInjector.update(Object) line: 350	
					ExtensionInjector.populateInterfaceBeans(boolean) line: 329	
					ExtensionInjector.andStart(BundleContext) line: 114	
					Activator.start(BundleContext) line: 50	
					BundleContextImpl$1.run() line: 711	
					AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]	
					BundleContextImpl.startActivator(BundleActivator) line: 702	
					BundleContextImpl.start() line: 683	
					BundleHost.startWorker(int) line: 381	
					BundleHost(AbstractBundle).start(int) line: 299	
					SecureAction.start(Bundle, int) line: 440	
					BundleLoader.setLazyTrigger() line: 268	
					EclipseLazyStarter.postFindLocalClass(String, Class, ClasspathManager) line: 107	
					ClasspathManager.findLocalClass(String) line: 460	
					DefaultClassLoader.findLocalClass(String) line: 216	
					BundleLoader.findLocalClass(String) line: 400	
					BundleLoader.findClassInternal(String, boolean, ClassLoader) line: 476	
					BundleLoader.findClass(String, boolean) line: 429	
					BundleLoader.findClass(String) line: 417	
					DefaultClassLoader.loadClass(String, boolean) line: 107	
					DefaultClassLoader(ClassLoader).loadClass(String) line: 248	
					BundleLoader.loadClass(String) line: 345	
					BundleHost.loadClass(String, boolean) line: 229	
					BundleHost(AbstractBundle).loadClass(String) line: 1207	
					EquinoxRegistryStrategy(RegistryStrategyOSGI).createExecutableExtension(RegistryContributor, String, String) line: 174	
					ExtensionRegistry.createExecutableExtension(RegistryContributor, String, String) line: 905	
					ConfigurationElement.createExecutableExtension(String) line: 243	
					ConfigurationElementHandle.createExecutableExtension(String) line: 55	
					EclipseAppHandle.run(Object) line: 191	
					EclipseAppLauncher.runApplication(Object) line: 110	
					EclipseAppLauncher.start(Object) line: 79	
					EclipseStarter.run(Object) line: 344	
					EclipseStarter.run(String[], Runnable) line: 179	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					Main.invokeFramework(String[], URL[]) line: 622	
					Main.basicRun(String[]) line: 577	
					Main.run(String[]) line: 1410	
					Main.main(String[]) line: 1386	
				Thread [OSGi Console] (Suspended)	
					Thread.sleep(long) line: not available [native method]	
					FrameworkConsole.runConsole() line: 125	
					FrameworkConsole.run() line: 104	
					Thread.run() line: 619	
				Thread [Framework Active Thread] (Suspended)	
					waiting for: Framework  (id=112)	
					Object.wait(long) line: not available [native method]	
					Framework.run() line: 1816	
					Thread.run() line: 619	
				Daemon Thread [Framework Event Dispatcher] (Suspended)	
					owns: ArrayList<E>  (id=232)	
					owns: HashMap<K,V>  (id=195)	
					owns: ArrayList<E>  (id=233)	
					owns: WirePuller  (id=234)	
					waiting for: DefaultClassLoader  (id=131)	
						owned by: Thread [main] (Suspended)	
							waiting for: HashMap<K,V>  (id=195)	
								owned by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
									waiting for: DefaultClassLoader  (id=131)	
										owned by: Thread [main] (Suspended)	
											waiting for: HashMap<K,V>  (id=195)	
												owned by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
													waiting for: DefaultClassLoader  (id=131)	
														owned by: Thread [main] (Suspended)	
															waiting for: HashMap<K,V>  (id=195)	
																owned by: Daemon Thread [Framework Event Dispatcher] (Suspended)	
					ClientAgenturService.<init>(IAgenturService) line: 25	
					Activator.bind(IAgenturService) line: 93	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					FilterInjector(ServiceInjector).invoke(Method, Object) line: 448	
					FilterInjector(ServiceInjector).invokeBindMethod(ServiceReference) line: 412	
					FilterInjector.doBind(ServiceReference) line: 58	
					FilterInjector(ServiceInjector).handleEvent(ServiceEvent) line: 366	
					ServiceInjector$InjectorServiceListener.serviceChanged(ServiceEvent) line: 476	
					FilteredServiceListener.serviceChanged(ServiceEvent) line: 104	
					BundleContextImpl.dispatchEvent(Object, Object, int, Object) line: 861	
					EventManager.dispatchEvent(Set, EventDispatcher, int, Object) line: 230	
					ListenerQueue.dispatchEventSynchronous(int, Object) line: 148	
					ServiceRegistry.publishServiceEventPrivileged(ServiceEvent) line: 819	
					ServiceRegistry.publishServiceEvent(ServiceEvent) line: 771	
					ServiceRegistrationImpl.register(Dictionary) line: 130	
					ServiceRegistry.registerService(BundleContextImpl, String[], Object, Dictionary) line: 214	
					BundleContextImpl.registerService(String[], Object, Dictionary) line: 433	
					BundleContextImpl.registerService(String, Object, Dictionary) line: 451	
					RemoteServiceRegistry.registerService(IRemoteServiceReference, BundleContext) line: 79	
					RemoteServiceFactory.createAndRegisterProxy(RemoteServiceDescription, BundleContext) line: 167	
					RemoteServiceFactory.createAndRegisterProxy(Class<?>, String, String, BundleContext) line: 131	
					ProxyFactory.andStart(BundleContext) line: 68	
					Activator(BetriebsartAwareActivator).registerRemoteProxy(Class<?>, String) line: 174	
					Activator.createOnlineAgenturService(BundleContext) line: 94	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					Activator(BetriebsartAwareActivator).registerBetriebsartAbhaengigeServices(BundleContext, BetriebsartStatus) line: 123	
					Activator(BetriebsartAwareActivator).updateBetriebsartAbhaengigeServices(BetriebsartStatus) line: 94	
					Activator(BetriebsartAwareActivator).updateBetriebsartAbhaengigeServices() line: 89	
					Activator(BetriebsartAwareActivator).bind(IStatusRegistry) line: 207	
					NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
					NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
					DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
					Method.invoke(Object, Object...) line: 597	
					FilterInjector(ServiceInjector).invoke(Method, Object) line: 448	
					FilterInjector(ServiceInjector).invokeBindMethod(ServiceReference) line: 412	
					FilterInjector.doBind(ServiceReference) line: 58	
					FilterInjector.doStart() line: 34	
					FilterInjector(ServiceInjector).andStart(BundleContext) line: 133	
					WirePuller.injectServiceInto(Object, Method) line: 188	
					WirePuller.injectIntoAnnotatedMethods(Object, Class<?>) line: 145	
					WirePuller.wire(Class<?>) line: 137	
					WirePuller.wire(Class<?>) line: 132	
					WirePuller.andStart(BundleContext) line: 96	
					Activator(BetriebsartAwareActivator).start(BundleContext) line: 67	
					Activator.start(BundleContext) line: 37	
					BundleContextImpl$1.run() line: 711	
					AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]	
					BundleContextImpl.startActivator(BundleActivator) line: 702	
					BundleContextImpl.start() line: 683	
					BundleHost.startWorker(int) line: 381	
					BundleHost(AbstractBundle).start(int) line: 299	
					BundleHost(AbstractBundle).start() line: 291	
					StartupsSafeRunnable.handleSelfActivation(IRienaStartupExtension) line: 101	
					StartupsSafeRunnable.run() line: 87	
					SafeRunner.run(ISafeRunnable) line: 42	
					Activator$StartupBundleListener.bundleChanged(BundleEvent) line: 126	
					BundleContextImpl.dispatchEvent(Object, Object, int, Object) line: 847	
					EventManager.dispatchEvent(Set, EventDispatcher, int, Object) line: 230	
					EventManager$EventThread.run() line: 340	
				Daemon Thread [Start Level Event Dispatcher] (Suspended)	
					waiting for: EventManager$EventThread  (id=23)	
					Object.wait(long) line: not available [native method]	
					EventManager$EventThread(Object).wait() line: 485	
					EventManager$EventThread.getNextEvent() line: 400	
					EventManager$EventThread.run() line: 336	
				Thread [Worker-JM] (Suspended)	
					waiting for: ArrayList<E>  (id=248)	
					Object.wait(long) line: not available [native method]	
					InternalWorker.run() line: 58	
				Daemon Thread [DeferredLoggingForwarder] (Suspended)	
					Unsafe.park(boolean, long) line: not available [native method]	
					LockSupport.park(Object) line: 158	
					AbstractQueuedSynchronizer$ConditionObject.await() line: 1925	
					LinkedBlockingQueue<E>.take() line: 399	
					DeferredLoggingForwarder.run() line: 47	
				Daemon Thread [WeakRef remover] (Suspended)	
					waiting for: ReferenceQueue$Lock  (id=249)	
					Object.wait(long) line: not available [native method]	
					ReferenceQueue<T>.remove(long) line: 118	
					ReferenceQueue<T>.remove() line: 134	
					WeakRef$Remover.run() line: 91	


It seems that locking (synchronized blocks) the registerServices field within the RemoteServiceRegistry is involved with this issue.
Comment 1 Stefan Liebig CLA 2011-05-09 08:02:23 EDT
The synchronized blocks have been removed and the registeredServices map is wrapped with Collections.synchronizedMap().