Are you using the latest felix version? regards,
Karl On Mon, May 26, 2014 at 2:44 PM, Benjamin Rogge < [email protected]> wrote: > Hello, > from time to time we are experiencing a deadlock in the URLHandlers Class > in Apache Felix. We are using Felix as an embedded OSGi Container and > instantiate the Felix Framework via ServiceLoader and Framework Factory > ourselves. The situation is as follows: When Felix.stop and Felix.init are > called by different threads, eventually URLHandlers. > unregisterFrameworkListsForContextSearch and > URLHandlers.registerFrameworkInstance > are called by the threads. There are two locks: m_frameworks and the Class > Object of URL (URL.class). registerFrameworkInstance tries to aquire > m_frameworks first and via the constructor of URLHanders URL.class after > that. unregisterFrameworkListsForContextSearch tries to aquire URL.class > first and m_frameworks after that. This is a classic deadlock situation. > The situation arises in unittests where we frequently start and stop the > felix framework. > > My questions are: Is it valid to call Felix.init after Felix.stop without > waiting if the framework actually stopped (since stop is asyncronous)? Or > do we have to wait between Felix.init and Felix.stop? Or would you consider > this a bug? > > Cheers and thanks for your support, > Benjamin Rogge > > > P.S.: Here is a listing of the stacktraces: > > Found one Java-level deadlock: > ============================= > "FelixShutdown": > waiting to lock monitor 0x0000000000ff7710 (object 0x00000007ff33e7f0, a > java.util.ArrayList), > which is held by "main" > "main": > waiting to lock monitor 0x00000000022c4a08 (object 0x0000000783b06b18, a > java.lang.Class), > which is held by "FelixShutdown" > > Java stack information for the threads listed above: > =================================================== > "FelixShutdown": > at org.apache.felix.framework.URLHandlers. > unregisterFrameworkListsForContextSearch(URLHandlers.java:315) > - waiting to lock <0x00000007ff33e7f0> (a java.util.ArrayList) > - locked <0x00000007ff33e840> (a java.util.HashMap) > - locked <0x0000000783b06b18> (a java.lang.Class for java.net.URL) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:57) > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at org.apache.felix.framework.util.SecureAction.invoke( > SecureAction.java:840) > at org.apache.felix.framework.URLHandlers. > unregisterFrameworkInstance(URLHandlers.java:635) > at org.apache.felix.framework.URLHandlersActivator.stop( > URLHandlersActivator.java:76) > at org.apache.felix.framework.util.SecureAction. > stopActivator(SecureAction.java:667) > at org.apache.felix.framework.Felix$SystemBundleActivator. > stop(Felix.java:4715) > at org.apache.felix.framework.util.SecureAction. > stopActivator(SecureAction.java:667) > at org.apache.felix.framework.Felix.stopBundle(Felix.java:2530) > at org.apache.felix.framework.Felix$2.run(Felix.java:959) > at java.lang.Thread.run(Thread.java:724) > "main": > at org.apache.felix.framework.URLHandlers.<init>( > URLHandlers.java:150) > - waiting to lock <0x0000000783b06b18> (a java.lang.Class for > java.net.URL) > at org.apache.felix.framework.URLHandlers. > registerFrameworkInstance(URLHandlers.java:600) > - locked <0x00000007ff33e7f0> (a java.util.ArrayList) > at org.apache.felix.framework.URLHandlersActivator.start( > URLHandlersActivator.java:71) > at org.apache.felix.framework.util.SecureAction. > startActivator(SecureAction.java:645) > at org.apache.felix.framework.Felix$SystemBundleActivator. > start(Felix.java:4634) > at org.apache.felix.framework.util.SecureAction. > startActivator(SecureAction.java:645) > at org.apache.felix.framework.Felix.init(Felix.java:783) > // ... Application specific trace > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Karl Pauls [email protected] http://twitter.com/karlpauls http://www.linkedin.com/in/karlpauls https://profiles.google.com/karlpauls

