Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 325409 - [ds] deadlock in getting services that are contributed by ds when one of threads calls the activate method of component
Summary: [ds] deadlock in getting services that are contributed by ds when one of thre...
Status: CLOSED WONTFIX
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: Compendium (show other bugs)
Version: 3.6   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: equinox.compendium-inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords:
Depends on: 326309 329940
Blocks:
  Show dependency tree
 
Reported: 2010-09-16 03:04 EDT by Meng Xin Zhu CLA
Modified: 2019-10-10 13:35 EDT (History)
5 users (show)

See Also:


Attachments
simple application (6.40 KB, application/octet-stream)
2010-09-16 03:05 EDT, Meng Xin Zhu CLA
no flags Details
updated simple application (6.40 KB, application/octet-stream)
2010-09-17 06:06 EDT, Meng Xin Zhu CLA
no flags Details
thread stack (124.41 KB, text/plain)
2010-09-17 08:00 EDT, Meng Xin Zhu CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Meng Xin Zhu CLA 2010-09-16 03:04:13 EDT
I'm not sure whether it's caused by p2 or client not following the best practice. Anyway, the deadlock happens on ds.

I create a simple application to reproduce it, which has the launching configuration named 'deadlock'. 

It's not hard to be reproduced, it probably happens after running the application three or four times.
Comment 1 Meng Xin Zhu CLA 2010-09-16 03:05:08 EDT
Created attachment 179000 [details]
simple application

it helps to reproduce the deadlock.
Comment 2 Stoyan Boshev CLA 2010-09-17 05:42:43 EDT
I cannot reproduce with the provided project.

Could you attach the full thread dump when the deadlock occurs?
Comment 3 Meng Xin Zhu CLA 2010-09-17 06:06:30 EDT
Created attachment 179098 [details]
updated simple application

introduce the implementation of LogService
Comment 4 Meng Xin Zhu CLA 2010-09-17 06:12:19 EDT
The previous application can't reproduce the deadlock. But the running performance are quite unstable. Sometimes it takes more than 10 seconds. Sometimes it finishes in a second.

Update the simple application to implement LogService. The deadlock can be reproduced.
Comment 5 Stoyan Boshev CLA 2010-09-17 07:28:28 EDT
I am sorry. I am still not able to reproduce the deadlock.
The launch configuration was missing a required plugin "org.eclipse.equinox.p2.core". After I added this plugin to the launch configuration I got a java.lang.StackOverflowError while running the application. Is this the expected behavior? 

Could you run in debug mode and when the deadlock occurs you shall be able to get the information about all threads or at least of the blocked threads.
Comment 6 Meng Xin Zhu CLA 2010-09-17 07:55:43 EDT
It's my mistake to lose the plug-in 'org.eclipse.equinox.p2.core' that is imported in my workspace.
I don't know why you got the StackOverflowError, it's not the expected behavior. The correct behavior of the application is printing out two object instances in the console.

Below is the thread stack, but its length overflows the maximum length of bugzilla's comment. I split it into two,

org.eclipse.equinox.launcher.Main at localhost:51606	
	Thread [main] (Running)	
	Daemon Thread [State Data Manager] (Running)	
	Daemon Thread [Start Level Event Dispatcher] (Running)	
	Daemon Thread [Framework Event Dispatcher] (Running)	
	Thread [Worker-JM] (Running)	
	Daemon Thread [[Timer] - Main Queue Handler] (Running)	
	Daemon Thread [[ThreadPool Manager] - Idle Thread] (Running)	
	Thread [app thread - com.windriver.p2.deadlock.test.0] (Suspended)	
		org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(java.lang.String) line: 49	
		com.windriver.p2.deadlock.internal.ServiceImpl.activate() line: 13	
		sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]	
		sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39	
		sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25	
		java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 597	
		org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(java.lang.Object, org.osgi.service.component.ComponentContext) line: 210	
		org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.impl.ComponentInstanceImpl) line: 139	
		org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(org.osgi.framework.Bundle, java.lang.Object, boolean) line: 329	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 580	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		com.windriver.p2.deadlock.Activator.getService(java.lang.Class<T>) line: 35	
		com.windriver.p2.deadlock.internal.Application.start(org.eclipse.equinox.app.IApplicationContext) line: 16	
		org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object) line: 196	
		org.eclipse.equinox.internal.app.AnyThreadAppLauncher.run() line: 26	
		java.lang.Thread.run() line: 619
Comment 7 Meng Xin Zhu CLA 2010-09-17 07:57:47 EDT
part two,
	
	
	Thread [Thread-1] (Suspended)	
		java.lang.Object.wait(long) line: not available [native method]	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 102	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108	
		org.eclipse.equinox.internal.util.security.SecurityUtil.doPrivileged(org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object) line: 687	
		org.eclipse.equinox.internal.util.ref.Log.getService() line: 424	
		org.eclipse.equinox.internal.util.ref.Log.logMessage(int, java.lang.String, java.lang.Throwable) line: 438	
		org.eclipse.equinox.internal.util.ref.Log.warning(java.lang.String, java.lang.Throwable) line: 201	
		org.eclipse.equinox.internal.ds.Activator.log(org.osgi.framework.BundleContext, int, java.lang.String, java.lang.Throwable) line: 368	
		org.eclipse.equinox.internal.ds.InstanceProcess.getLock() line: 119	
		org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(org.osgi.framework.Bundle, org.eclipse.equinox.internal.ds.model.ServiceComponentProp, java.lang.Object, boolean) line: 520	
		org.eclipse.equinox.internal.ds.ServiceReg.getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration) line: 53	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run() line: 120	
		java.security.AccessController.doPrivileged(java.security.PrivilegedAction<T>) line: not available [native method]	
		org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService() line: 118	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl) line: 447	
		org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(org.eclipse.osgi.framework.internal.core.BundleContextImpl, org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl) line: 430	
		org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(org.osgi.framework.ServiceReference) line: 667	
		org.eclipse.equinox.internal.util.ref.Log.getService0() line: 414	
		org.eclipse.equinox.internal.util.ref.Log.dispatchPrivileged(int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 792	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner$PA.run() line: 169	
		org.eclipse.equinox.internal.util.security.PrivilegedRunner.doPrivileged(java.lang.Object, org.eclipse.equinox.internal.util.security.PrivilegedRunner$PrivilegedDispatcher, int, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object) line: 108
Comment 8 Meng Xin Zhu CLA 2010-09-17 08:00:40 EDT
Created attachment 179104 [details]
thread stack
Comment 9 Meng Xin Zhu CLA 2010-10-29 02:39:21 EDT
The workaround in this case is not using DS to register the logger service.
Comment 10 Thomas Watson CLA 2010-10-29 08:41:23 EDT
Stoyan, we discussed this a while ago (in September).  Were you going to provide a fix to org.eclipse.equinox.internal.util.ref.Log to avoid recursion in DS?
Comment 11 Stoyan Boshev CLA 2010-11-02 13:38:09 EDT
(In reply to comment #10)
> Stoyan, we discussed this a while ago (in September).  Were you going to
> provide a fix to org.eclipse.equinox.internal.util.ref.Log to avoid recursion
> in DS?

Sure, I may provide a fix for ref.Log, but it will not fix the problem described here. It will just fix the StackOverflowError that appear because of the recursion calls to ref.Log, which happen because the SCR is blocked and cannot build new components. 
Anyway, I thought that fixing the ref.Log would not be necessary if the original problem is fixed.
Comment 12 Meng Xin Zhu CLA 2010-11-03 04:35:52 EDT
(In reply to comment #11)
> (In reply to comment #10)
> > Stoyan, we discussed this a while ago (in September).  Were you going to
> > provide a fix to org.eclipse.equinox.internal.util.ref.Log to avoid recursion
> > in DS?
> 
> Sure, I may provide a fix for ref.Log, but it will not fix the problem described
> here. It will just fix the StackOverflowError that appear because of the
> recursion calls to ref.Log, which happen because the SCR is blocked and cannot
> build new components.
> Anyway, I thought that fixing the ref.Log would not be necessary if the original
> problem is fixed.
I think the Log recursion is a common case. If some Log implementation is contributed by DS, and bind method is a long run. It's easy to reproduce the recursion that might make vm crash to cost all memory at last.
Comment 13 Thomas Watson CLA 2010-11-12 09:13:46 EST
It would be good to see if the fix in bug329940 helps this scenario.
Comment 14 Stoyan Boshev CLA 2010-11-12 09:52:30 EST
(In reply to comment #13)
> It would be good to see if the fix in bug329940 helps this scenario.

I believe the other blocking bug #326309 is the most important one in this case.
Comment 15 Thomas Watson CLA 2010-12-01 15:44:38 EST
Dropping milestone.  I still would like to know if the issue can be reproduced with the latest versions in 3.7 though.  Nothing else is planned to fix this issue in DS or the framework.
Comment 16 Meng Xin Zhu CLA 2011-02-24 04:34:47 EST
The deadlock protection of DS works now. The deadlock won't happen again. However it's just a workaround/protection in framework, running the attached test application with arguments -debug -consolelog, I got below deadlock detection,

!ENTRY org.eclipse.equinox.ds 2 0 2011-02-24 17:26:22.766
!MESSAGE Getting a lock required more than 10000 ms. There might be a synchronization problem in this callstack or just the build/dispose process of some components took too long! 
!STACK 0
java.lang.Exception: Debug stacktrace
	at org.eclipse.equinox.internal.ds.InstanceProcess.getLock(InstanceProcess.java:119)
	at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:528)
	at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53)
	at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:138)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:136)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:468)
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:467)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:594)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.addingService(ProvisioningAgent.java:159)
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980)
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262)
	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185)
	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:348)
	at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:283)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:66)
	at com.windriver.p2.deadlock.internal.InterfaceImpl$MyThread.run(InterfaceImpl.java:20)

Definitely we should escalate the bug 326309 that is root cause, or find and document the best practice advice for clients.
Comment 17 Eclipse Genie CLA 2019-10-10 13:35:29 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.