Return-Path: X-Original-To: apmail-felix-users-archive@minotaur.apache.org Delivered-To: apmail-felix-users-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9F4BCF7FC for ; Mon, 26 May 2014 13:01:05 +0000 (UTC) Received: (qmail 92719 invoked by uid 500); 26 May 2014 13:01:05 -0000 Delivered-To: apmail-felix-users-archive@felix.apache.org Received: (qmail 92657 invoked by uid 500); 26 May 2014 13:01:05 -0000 Mailing-List: contact users-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@felix.apache.org Delivered-To: mailing list users@felix.apache.org Received: (qmail 92649 invoked by uid 99); 26 May 2014 13:01:05 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 May 2014 13:01:05 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of karlpauls@gmail.com designates 74.125.82.176 as permitted sender) Received: from [74.125.82.176] (HELO mail-we0-f176.google.com) (74.125.82.176) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 May 2014 13:01:01 +0000 Received: by mail-we0-f176.google.com with SMTP id q59so7830827wes.7 for ; Mon, 26 May 2014 06:00:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=mj/15hJmhDOmaIXgzlHp3bOjssuoYfnJ3ibNelXwNYE=; b=ofApJgDP8EUHVBZMX5O4BbLPD35vOXQQJ0sjBZSfy84iW0OiN5mXJ9zAEh7HrYAKa9 /4zeztWYRMytysLJ4zBhSOKJ63LY8LwXRoXny37azkmrQRME9seU2lxOAHh9sVIXORG6 H6yaMvrhkrOYx87ia307xSG1XCh9mknbJiYfDHMFzqsIdOluhBZeEQPUm0KL7emE8I5Z ys0uCO82VFt/oJjXzHLPTRzi80x1RfalNbnAaq1APTUM7J6apbUtY5g8ar22L9gEzrGd pAPgMizDoI1DmEAbY9yjV7+w4/cSX+uSo86lugyxX9INVb1bi/zKU8L7xtrk7krLY6gT TUIg== X-Received: by 10.180.14.72 with SMTP id n8mr27425690wic.53.1401109237212; Mon, 26 May 2014 06:00:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.217.166.199 with HTTP; Mon, 26 May 2014 06:00:16 -0700 (PDT) In-Reply-To: References: <7cfe14ae0584436500808f8b93dab2ff@crux.uberspace.de> From: Karl Pauls Date: Mon, 26 May 2014 15:00:16 +0200 Message-ID: Subject: Re: Deadlock in URLHandlers when Felix.init and Felix.stop are called concurrently To: "users@felix.apache.org" Content-Type: multipart/alternative; boundary=f46d04138a25602bca04fa4d2a2e X-Virus-Checked: Checked by ClamAV on apache.org --f46d04138a25602bca04fa4d2a2e Content-Type: text/plain; charset=UTF-8 I take it back - it seems to be a bug. Can you create a jira issue for it? regards, Karl On Mon, May 26, 2014 at 2:57 PM, Karl Pauls wrote: > Are you using the latest felix version? > > regards, > > Karl > > > On Mon, May 26, 2014 at 2:44 PM, Benjamin Rogge < > felix-osgi@benjamin-rogge.de> 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.( >> 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: users-unsubscribe@felix.apache.org >> For additional commands, e-mail: users-help@felix.apache.org >> >> > > > -- > Karl Pauls > karlpauls@gmail.com > http://twitter.com/karlpauls > http://www.linkedin.com/in/karlpauls > https://profiles.google.com/karlpauls > -- Karl Pauls karlpauls@gmail.com http://twitter.com/karlpauls http://www.linkedin.com/in/karlpauls https://profiles.google.com/karlpauls --f46d04138a25602bca04fa4d2a2e--