On Wed, Sep 30, 2009 at 9:29 AM, Don Brown <[email protected]> wrote:
> I may be able to move to 2.0.1, as we haven't had much luck with
> 1.8.1.  We've had to patch it twice (both fixes I believe in trunk)
> and it still won't run under WebLogic due to, yet again, weird
> NoClassDef errors in url handling.
>
> How soon is "real soon now"?

I plan to call the vote next week.

regards,

Karl

> Don
>
> On Tue, Sep 29, 2009 at 5:27 PM, Karl Pauls <[email protected]> wrote:
>> On Tue, Sep 29, 2009 at 7:17 AM, Don Brown <[email protected]> wrote:
>>> Any way to easily fix it on 1.8.1? I can't move to 2.0 easily, but
>>> this issue is quite worrying.
>>
>> Maybe.
>>
>> In general, I don't think it is an easy one to hit for you as the
>> issue at hand is the following. Something at the outside is calling
>> into java.* classes which lock the appclassloader and then create a
>> url which goes via the urlhandlers which turn around and try to lock
>> the serviceregistry (this part has changed in 2.0). At the same time
>> something on the outside is calling into the framework, trying to get
>> a service, which locks the serviceregistry and is then triggering a
>> classload for the appclassloader -> deadlock. This is a pretty special
>> combination and due to the fact that certain paths inside the java.*
>> and javax.* packages result in different orders of lock taking.
>>
>> I can try to look into creating a patch for you as the urlhandlers are
>> somewhat independent so it might be possible to create an easy
>> backport but it sure would be nicer if we could get you on the current
>> trunk. I plan to cut a 2.0.1 release real soon now...
>>
>> regards,
>>
>> Karl
>>
>>> Don
>>>
>>> On Tue, Sep 29, 2009 at 11:16 AM, Gerry Woods <[email protected]> wrote:
>>>> Thanks for your response Karl.  We examined the 2.0 source today and 
>>>> arrived
>>>> at the same conclusion.  We're testing with it now.
>>>>
>>>> On Mon, Sep 28, 2009 at 2:23 PM, Karl Pauls <[email protected]> wrote:
>>>>
>>>>> This looks like something which should not be happening with felix
>>>>> 2.0.0 anymore. Can you reproduce the issue and if so, can you retry
>>>>> with felix 2.0?
>>>>>
>>>>> regards,
>>>>>
>>>>> Karl
>>>>>
>>>>> On Sat, Sep 26, 2009 at 1:24 AM, Gerry Woods <[email protected]> wrote:
>>>>> > Hi,
>>>>> > First let me say a word of thanks for the fantastic work you guys have
>>>>> been
>>>>> > doing.  We have encountered a deadlock with Felix (1.8.1) and Spring-DM
>>>>> > (1.2.0) and I wanted to run it by you guys to see if this is a known
>>>>> issue,
>>>>> > or if you have any opinions on the problem.  I had a look through Jira
>>>>> for
>>>>> > any deadlock-related issues and didn't see anything that looked quite
>>>>> like
>>>>> > this.
>>>>> > Thanks for any help or feedback,
>>>>> > Gerry
>>>>> >
>>>>> >
>>>>> > Found one Java-level deadlock:
>>>>> > =============================
>>>>> > "SpringOsgiExtenderThread-17":
>>>>> >  waiting to lock monitor 0x0033d8ec (object 0x07f41dc0, a
>>>>> > org.apache.felix.framework.ServiceRegistry),
>>>>> >  which is held by "SpringOsgiExtenderThread-3"
>>>>> > "SpringOsgiExtenderThread-3":
>>>>> >  waiting to lock monitor 0x0033d7ac (object 0x078c9058, a
>>>>> > sun.misc.Launcher$AppClassLoader),
>>>>> >  which is held by "SpringOsgiExtenderThread-17"
>>>>> >
>>>>> > Java stack information for the threads listed above:
>>>>> > ===================================================
>>>>> > "SpringOsgiExtenderThread-17":
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:165)
>>>>> >        - waiting to lock <0x07f41dc0> (a
>>>>> > org.apache.felix.framework.ServiceRegistry)
>>>>> >        at
>>>>> > org.apache.felix.framework.Felix.getServiceReferences(Felix.java:2617)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:2672)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:310)
>>>>> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>> >        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>> >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
>>>>> > Source)
>>>>> >        at java.lang.reflect.Method.invoke(Unknown Source)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.util.SecureAction.invoke(SecureAction.java:763)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.URLHandlersStreamHandlerProxy.getStreamHandlerService(URLHandlersStreamHandlerProxy.java:476)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:352)
>>>>> >        at java.net.URL.<init>(Unknown Source)
>>>>> >        at java.net.URL.<init>(Unknown Source)
>>>>> >        at java.net.URL.<init>(Unknown Source)
>>>>> >        at java.net.JarURLConnection.parseSpecs(Unknown Source)
>>>>> >        at java.net.JarURLConnection.<init>(Unknown Source)
>>>>> >        at sun.net.www.protocol.jar.JarURLConnection.<init>(Unknown
>>>>> Source)
>>>>> >        at sun.net.www.protocol.jar.Handler.openConnection(Unknown 
>>>>> > Source)
>>>>> >        at java.net.URL.openConnection(Unknown Source)
>>>>> >        at java.net.URL.openStream(Unknown Source)
>>>>> >        at java.lang.ClassLoader.getSystemResourceAsStream(Unknown 
>>>>> > Source)
>>>>> >        at java.lang.Class.getResourceAsStream(Unknown Source)
>>>>> >        at sun.text.NormalizerImpl$1.run(Unknown Source)
>>>>> >        at java.security.AccessController.doPrivileged(Native Method)
>>>>> >        at sun.text.NormalizerImpl.<init>(Unknown Source)
>>>>> >        at sun.text.NormalizerImpl.<clinit>(Unknown Source)
>>>>> >        at sun.text.Normalizer.decompose(Unknown Source)
>>>>> >        at sun.text.Normalizer$NFKDMode.normalize(Unknown Source)
>>>>> >        at sun.text.Normalizer.normalize(Unknown Source)
>>>>> >        at sun.security.x509.AVA.toRFC2253CanonicalString(Unknown Source)
>>>>> >        at sun.security.x509.RDN.toRFC2253StringInternal(Unknown Source)
>>>>> >        at sun.security.x509.RDN.toRFC2253String(Unknown Source)
>>>>> >        at sun.security.x509.X500Name.getRFC2253CanonicalName(Unknown
>>>>> > Source)
>>>>> >        at sun.security.x509.X500Name.equals(Unknown Source)
>>>>> >        at sun.security.pkcs.PKCS7.getCertificate(Unknown Source)
>>>>> >        at sun.security.pkcs.SignerInfo.getCertificate(Unknown Source)
>>>>> >        at sun.security.pkcs.SignerInfo.verify(Unknown Source)
>>>>> >        at sun.security.pkcs.PKCS7.verify(Unknown Source)
>>>>> >        at sun.security.pkcs.PKCS7.verify(Unknown Source)
>>>>> >        at sun.security.util.SignatureFileVerifier.processImpl(Unknown
>>>>> > Source)
>>>>> >        at sun.security.util.SignatureFileVerifier.process(Unknown 
>>>>> > Source)
>>>>> >        at java.util.jar.JarVerifier.processEntry(Unknown Source)
>>>>> >        at java.util.jar.JarVerifier.update(Unknown Source)
>>>>> >        at java.util.jar.JarFile.initializeVerifier(Unknown Source)
>>>>> >        at java.util.jar.JarFile.getInputStream(Unknown Source)
>>>>> >        - locked <0x078c2b28> (a java.util.jar.JarFile)
>>>>> >        at sun.misc.URLClassPath$JarLoader$1.getInputStream(Unknown
>>>>> Source)
>>>>> >        at sun.misc.Resource.cachedInputStream(Unknown Source)
>>>>> >        - locked <0x08338cd8> (a sun.misc.URLClassPath$JarLoader$1)
>>>>> >        at sun.misc.Resource.getByteBuffer(Unknown Source)
>>>>> >        at java.net.URLClassLoader.defineClass(Unknown Source)
>>>>> >        at java.net.URLClassLoader.access$100(Unknown Source)
>>>>> >        at java.net.URLClassLoader$1.run(Unknown Source)
>>>>> >        at java.security.AccessController.doPrivileged(Native Method)
>>>>> >        at java.net.URLClassLoader.findClass(Unknown Source)
>>>>> >        at java.lang.ClassLoader.loadClass(Unknown Source)
>>>>> >        - locked <0x078d3468> (a sun.misc.Launcher$ExtClassLoader)
>>>>> >        at java.lang.ClassLoader.loadClass(Unknown Source)
>>>>> >        - locked <0x078c9058> (a sun.misc.Launcher$AppClassLoader)
>>>>> >        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
>>>>> >        - locked <0x078c9058> (a sun.misc.Launcher$AppClassLoader)
>>>>> >        at java.lang.ClassLoader.loadClass(Unknown Source)
>>>>> >        at sun.security.jca.ProviderConfig$3.run(Unknown Source)
>>>>> >        at java.security.AccessController.doPrivileged(Native Method)
>>>>> >        at sun.security.jca.ProviderConfig.doLoadProvider(Unknown Source)
>>>>> >        at sun.security.jca.ProviderConfig.getProvider(Unknown Source)
>>>>> >        - locked <0x078c9058> (a sun.misc.Launcher$AppClassLoader)
>>>>> >        at sun.security.jca.ProviderList.getProvider(Unknown Source)
>>>>> >        at sun.security.jca.ProviderList.getIndex(Unknown Source)
>>>>> >        at sun.security.jca.ProviderList.getProviderConfig(Unknown 
>>>>> > Source)
>>>>> >        at sun.security.jca.ProviderList.getProvider(Unknown Source)
>>>>> >        at java.security.Security.getProvider(Unknown Source)
>>>>> >        at
>>>>> >
>>>>> com.soa.security.spring.ProviderRegistration.register(ProviderRegistration.java:31)
>>>>> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>> >        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>>>> >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
>>>>> > Source)
>>>>> >        at java.lang.reflect.Method.invoke(Unknown Source)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>>> >        at java.security.AccessController.doPrivileged(Native Method)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>>> >        - locked <0x07ff23f0> (a java.util.concurrent.ConcurrentHashMap)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>>> >        at
>>>>> >
>>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>>> >        - locked <0x07ff2690> (a java.util.concurrent.ConcurrentHashMap)
>>>>> >        at
>>>>> >
>>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
>>>>> >        - locked <0x07fe1020> (a java.lang.Object)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136)
>>>>> >        at java.lang.Thread.run(Unknown Source)
>>>>> > "SpringOsgiExtenderThread-3":
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.util.ldap.Evaluator.evaluate(Evaluator.java:96)
>>>>> >        at
>>>>> org.apache.felix.framework.FilterImpl.match(FilterImpl.java:166)
>>>>> >        at
>>>>> org.apache.felix.framework.FilterImpl.match(FilterImpl.java:226)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:182)
>>>>> >        - locked <0x07f41dc0> (a
>>>>> org.apache.felix.framework.ServiceRegistry)
>>>>> >        at
>>>>> > org.apache.felix.framework.Felix.getServiceReferences(Felix.java:2617)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:2672)
>>>>> >        at
>>>>> >
>>>>> org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:310)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.util.OsgiServiceReferenceUtils.getServiceReferences(OsgiServiceReferenceUtils.java:159)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.util.OsgiServiceReferenceUtils.getServiceReferences(OsgiServiceReferenceUtils.java:195)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.util.OsgiServiceReferenceUtils.isServicePresent(OsgiServiceReferenceUtils.java:327)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.MandatoryServiceDependency.isServicePresent(MandatoryServiceDependency.java:82)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.doFindDependencies(DependencyServiceManager.java:287)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.access$700(DependencyServiceManager.java:40)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$1.run(DependencyServiceManager.java:213)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.util.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:124)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.findServiceDependencies(DependencyServiceManager.java:209)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:248)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:175)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
>>>>> >        at
>>>>> >
>>>>> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:718)
>>>>> >        at java.lang.Thread.run(Unknown Source)
>>>>> >
>>>>> > Found 1 deadlock.
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Karl Pauls
>>>>> [email protected]
>>>>>
>>>>
>>>
>>
>>
>>
>> --
>> Karl Pauls
>> [email protected]
>>
>



-- 
Karl Pauls
[email protected]

Reply via email to