felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karl Pauls <karlpa...@gmail.com>
Subject Re: Security Warning: Felix with Java Web Start
Date Fri, 25 Oct 2013 18:55:51 GMT
Martin,

this is very interesting. Thanks for the detailed report. I was already
guessing that it might be related to the code you point out. I'll have to
investigate a bit more but for now, you should be good with your patch - If
I can't think of anything else, i might have to make it so that we can
disable that part with a system property.

regards,

Karl


On Fri, Oct 25, 2013 at 8:43 PM, Martin Rytter <martin@ryt.dk> wrote:

> Hi everyone,
>
> I work for a company that have been using Felix with Java Web Start in
> a core product for several years. Thus, we have recently encountered
> the security warning discussed on this mailing list and in the issue
> below:
>
> https://issues.apache.org/jira/browse/FELIX-4281
>
> I have been looking into this now and then for the past few weeks, and
> I have a small toy-example that reproduces the problem. For a while I
> thought we had a problem somewhere in our code, or maybe something was
> wrong with Java Web Start (that would not the the first time ...), but
> I am beginning to think we're dealing with a bug in Felix. I do not
> understand all aspects of the problem, but I have found that removing
> a few lines of code from
> org/apache/felix/framework/ExtensionManager.java makes the problem go
> away:
>
> //
>  Felix.m_secureAction.addURLToURLClassLoader(Felix.m_secureAction.createURL(
> //                 Felix.m_secureAction.createURL(null, "http:",
> extensionManager),
> //                 "http://felix.extensions:9/", extensionManager),
> //                 Felix.class.getClassLoader());
>
> The code seems to have something to do with OSGi extension bundles. We
> don't use them anyway. Thus, we can live with that fix. However, this
> is probably not a solution for everyone.
>
> The code I have removed adds the special "http://felix.extensions:9/"
> URL to an URLClassLoader. It seems that this URL causes problems when
> Java Web Start performs security checks. I got suspicious about this
> when I got the following in my Java Web Start log:
>
> security: JAVAWS AppPolicy Permission requested for:
> http://felix.extensions:9/
> ruleset: finding Deployment Rule Set for
>         title: null
>         location: null
>         main location: http://felix.extensions:9/
>         main version: null
>         isArtifact: true
>
> The main location does not look like the main location of other jar
> files in the log. That made me stumble upon an old issue from 2011
> (https://issues.apache.org/jira/browse/FELIX-2780). In the comments
> Ingo Bauersachs suggested to replace "http" with some other protocol
> descriptor. I have tried to do the same, but it does not remove the
> security warnings. However, when I remove the lines as suggested
> above, my log looks like this:
>
> Security: JAVAWS AppPolicy Permission requested for:
> http://localhost:8000/felix.jar
> ruleset: finding Deployment Rule Set for
>         title: Webstart Felix
>         location: http://localhost:8000/wsf.jnlp
>         main location: http://localhost:8000/felix.jar
>         main version: null
>         isArtifact: true
>
> I have tried looking into
> org/apache/felix/framework/util/SecureAction.java to see if I would
> somehow come up with a less radical fix. I have failed to do so until
> now, but maybe someone with a deeper knowledge of Felix could figure
> something out?
>
> My small toy program is a very simple one. It looks like this:
>
>   public static void main(String[] args) throws Exception {
>
>     System.out.println("Bootstrapper running");
>
>     System.out.println("Press '5' to enable more logging in your " +
>       "Java Webstart Console (you've got 3 seconds).");
>
>     for(int i = 3; i > 0; i--) {
>       Thread.sleep(1000);
>       System.out.println(i);
>     }
>
>     System.out.println("Starting Felix");
>     HashMap<String,String> cfg = new HashMap<String,String>();
>     //cfg.put("felix.service.urlhandlers", "false"); // tried this: it
> doesn't make a difference.
>
>     Felix f = new Felix(cfg);
>     f.init(); // <--- this is where the warning is shown
>     f.start();
>     f.stop();
>
>     System.out.println("It worked!");
>   }
>
> My JNLP file looks like this:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <jnlp spec="1.0+" codebase="http://localhost:8000/" href="wsf.jnlp">
>     <information>
>         <title>Webstart Felix</title>
>         <vendor>Martin Rytter</vendor>
>         <offline-allowed/>
>     </information>
>     <security>
>       <all-permissions />
>     </security>
>     <resources>
>         <j2se version="1.7.0+" href="
> http://java.sun.com/products/autodl/j2se"/>
>         <jar href="wsf.jar" main="true" />
>         <jar href="felix.jar" />
>     </resources>
>     <application-desc name="Webstart Felix" main-class="wsf.Main" />
> </jnlp>
>
> I use a JNLP template because this is what we do in our product.
> However, signing the plain old JNLP file would probably cause the same
> problem. My template looks like this:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <jnlp spec="1.0+" codebase="*" href="*">
>     <information>
>         <title>*</title>
>         <vendor>Martin Rytter</vendor>
>         <offline-allowed/>
>     </information>
>     <security>
>       <all-permissions />
>     </security>
>     <resources>
>         <j2se version="1.7.0+" href="
> http://java.sun.com/products/autodl/j2se"/>
>         <jar href="wsf.jar" main="true" />
>         <jar href="felix.jar" />
>     </resources>
>     <application-desc name="*" main-class="wsf.Main" />
> </jnlp>
>
> The recent security updates prefer if you add some special entries to
> the manifests of all your jar files. Thus, I add the following entries
> to the felix.jar and wsf.jar:
>
> Codebase=*
> Permissions=all-permissions
> Trusted-Only=true
>
> Both my jar files are signed using our company's keystore. I you have
> trouble reproducing what I did above, I could remove the keystore from
> my example and share it with you. It would probably be possible to do
> the same with a self-signed certificate, but I have not tried that
> yet.
>
> I discovered the problem when using org.apache.felix.framework-4.0.3,
> but I have made my toy-example with the more recent
> org.apache.felix.framework-4.2.1. The two versions of Felix seem to
> have the same problem.
>
> I have tried to get a deeper understanding of the problem by making a
> threaddump when the security warning is shown. I didn't learn a lot
> from that, but I suspect someone with deep knowledge of Java Web Start
> or Felix would. The threaddump looks like this:
>
> Dump thread stack ...
> ----------------------------------------------------
> 2013-10-25 09:01:25
> Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.45-b08 mixed mode):
>
> "FelixDispatchQueue" prio=10 tid=0x00007f0924092000 nid=0x14f9 in
> Object.wait() [0x00007f099a68b000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007ae4ab7e0> (a java.util.ArrayList)
> at java.lang.Object.wait(Object.java:503)
> at
> org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:1063)
> - locked <0x00000007ae4ab7e0> (a java.util.ArrayList)
> at
> org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
> at
> org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:101)
> at java.lang.Thread.run(Thread.java:744)
>
> "javawsApplicationMain" prio=10 tid=0x00007f09380be000 nid=0x14f8 in
> Object.wait() [0x00007f092fb73000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1c1a5c8> (a java.lang.Object)
> at java.lang.Object.wait(Object.java:503)
> at com.sun.javaws.ui.JavawsSysRun.delegate(Unknown Source)
> - locked <0x00000007b1c1a5c8> (a java.lang.Object)
> at com.sun.deploy.util.DeploySysRun.execute(Unknown Source)
> at com.sun.deploy.util.DeploySysRun$1.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at com.sun.deploy.util.DeploySysRun.executePrivileged(Unknown Source)
> at com.sun.deploy.ui.UIFactory.showSSV3Dialog(Unknown Source)
> at
> com.sun.deploy.uitoolkit.impl.awt.ui.UIFactoryImpl.showSSV3Dialog(Unknown
> Source)
> at com.sun.deploy.security.SandboxSecurity.showUntrustedDialog(Unknown
> Source)
> at com.sun.deploy.security.SandboxSecurity.checkRunUntrusted(Unknown
> Source)
> at
> com.sun.deploy.security.SandboxSecurity.checkUnsignedSandboxSecurity(Unknown
> Source)
> - locked <0x00000007ae55f418> (a com.sun.deploy.util.SessionProperties)
> at com.sun.deploy.security.SandboxSecurity.isPermissionGranted(Unknown
> Source)
> at com.sun.javaws.security.AppPolicy.grantRestrictedAccess(Unknown Source)
> at com.sun.javaws.security.AppPolicy.addPermissions(Unknown Source)
> at com.sun.jnlp.JNLPClassLoader.getTrustedCodeSources(Unknown Source)
> at
> com.sun.deploy.security.CPCallbackHandler$ParentCallback.strategy(Unknown
> Source)
> at
> com.sun.deploy.security.CPCallbackHandler$ParentCallback.openClassPathElement(Unknown
> Source)
> - locked <0x00000007b1bd2948> (a
> com.sun.deploy.security.CPCallbackHandler$ParentCallback)
> at com.sun.deploy.security.DeployURLClassPath$UrlLoader.<init>(Unknown
> Source)
> at com.sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
> at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
> - locked <0x00000007b1b022c0> (a
> com.sun.deploy.security.DeployURLClassPath)
> at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:358)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> - locked <0x00000007b1b015d0> (a com.sun.jnlp.JNLPClassLoader)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
> - locked <0x00000007b1b012e0> (a com.sun.jnlp.JNLPClassLoader)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:190)
> at
> org.apache.felix.framework.BundleWiringImpl.<clinit>(BundleWiringImpl.java:1316)
> at
> org.apache.felix.framework.StatefulResolver.markResolvedRevisions(StatefulResolver.java:938)
> at
> org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:427)
> at org.apache.felix.framework.Felix.init(Felix.java:684)
> at wsf.Main.main(Unknown Source)
> 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 com.sun.javaws.Launcher.executeApplication(Unknown Source)
> at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
> at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
> at com.sun.javaws.Launcher.run(Unknown Source)
> at java.lang.Thread.run(Thread.java:744)
>
> "AWT-EventQueue-2" prio=10 tid=0x00007f093c1ac000 nid=0x14f7 waiting
> on condition [0x00007f092f874000]
>    java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for  <0x00000007b1b90088> (a
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
> at java.awt.EventQueue.getNextEvent(EventQueue.java:543)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
>
> "Keep-Alive-Timer" daemon prio=10 tid=0x00007f09380b0800 nid=0x14f6
> waiting on condition [0x00007f092fa76000]
>    java.lang.Thread.State: TIMED_WAITING (sleeping)
> at java.lang.Thread.sleep(Native Method)
> at sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172)
> at java.lang.Thread.run(Thread.java:744)
>
> "Image Fetcher 0" daemon prio=10 tid=0x00007f093c178000 nid=0x14f4 in
> Object.wait() [0x00007f092f773000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1b90230> (a java.util.Vector)
> at sun.awt.image.ImageFetcher.nextImage(ImageFetcher.java:147)
> - locked <0x00000007b1b90230> (a java.util.Vector)
> at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:200)
> at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
>
> "ProgressReporter" daemon prio=10 tid=0x00007f0920003800 nid=0x14f1 in
> Object.wait() [0x00007f092f975000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1b902d8> (a java.util.ArrayList)
> at
> com.sun.javaws.progress.PreloaderDelegate$ProgressQueueChecker.run(Unknown
> Source)
> - locked <0x00000007b1b902d8> (a java.util.ArrayList)
> at java.lang.Thread.run(Thread.java:744)
>
> "TimerQueue" daemon prio=10 tid=0x00007f093c15b000 nid=0x14eb waiting
> on condition [0x00007f099812a000]
>    java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for  <0x00000007b1b90370> (a
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
> at java.util.concurrent.DelayQueue.take(DelayQueue.java:209)
> at javax.swing.TimerQueue.run(TimerQueue.java:171)
> at java.lang.Thread.run(Thread.java:744)
>
> "ConsoleTraceListener" daemon prio=10 tid=0x00007f0938008000
> nid=0x14ea in Object.wait() [0x00007f099822b000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1b90460> (a
> com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)
> at java.lang.Object.wait(Object.java:503)
> at
> com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$ConsoleWriterThread.run(Unknown
> Source)
> - locked <0x00000007b1b90460> (a
> com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)
>
> "AWT-EventQueue-1" prio=10 tid=0x00007f0938006000 nid=0x14e8 waiting
> on condition [0x00007f099a586000]
>    java.lang.Thread.State: RUNNABLE
> at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacksImpl(Native
> Method)
> at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacks(Unknown Source)
> at
> com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow$3.actionPerformed(Unknown
> Source)
> at
> javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3421)
> at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1664)
> at javax.swing.JComponent.processKeyBinding(JComponent.java:2878)
> at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307)
> at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:250)
> at
> javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2970)
> at javax.swing.JComponent.processKeyBindings(JComponent.java:2962)
> at javax.swing.JComponent.processKeyEvent(JComponent.java:2841)
> at java.awt.Component.processEvent(Component.java:6282)
> at java.awt.Container.processEvent(Container.java:2229)
> at java.awt.Component.dispatchEventImpl(Component.java:4861)
> at java.awt.Container.dispatchEventImpl(Container.java:2287)
> at java.awt.Component.dispatchEvent(Component.java:4687)
> at
> java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895)
> at
> java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
> at
> java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
> at
> java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
> at
> java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
> at java.awt.Component.dispatchEventImpl(Component.java:4731)
> at java.awt.Container.dispatchEventImpl(Container.java:2287)
> at java.awt.Window.dispatchEventImpl(Window.java:2719)
> at java.awt.Component.dispatchEvent(Component.java:4687)
> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
> at java.awt.EventQueue.access$200(EventQueue.java:103)
> at java.awt.EventQueue$3.run(EventQueue.java:694)
> at java.awt.EventQueue$3.run(EventQueue.java:692)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
> at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
> at java.awt.EventQueue$4.run(EventQueue.java:708)
> at java.awt.EventQueue$4.run(EventQueue.java:706)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
> at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
> at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
> at java.awt.Dialog.show(Dialog.java:1082)
> at java.awt.Component.show(Component.java:1651)
> at java.awt.Component.setVisible(Component.java:1603)
> at java.awt.Window.setVisible(Window.java:1014)
> at java.awt.Dialog.setVisible(Dialog.java:1005)
> at com.sun.deploy.ui.DialogHelper.setVisible(Unknown Source)
> at com.sun.deploy.ui.DialogTemplate$31.run(Unknown Source)
> at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
> at java.awt.EventQueue.access$200(EventQueue.java:103)
> at java.awt.EventQueue$3.run(EventQueue.java:694)
> at java.awt.EventQueue$3.run(EventQueue.java:692)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
>
> "DestroyJavaVM" prio=10 tid=0x00007f09b400a800 nid=0x14cd waiting on
> condition [0x0000000000000000]
>    java.lang.Thread.State: RUNNABLE
>
> "Javaws Secure Thread" daemon prio=10 tid=0x00007f09b42d3000
> nid=0x14e6 in Object.wait() [0x00007f099a78c000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007ae6730c0> (a
> java.awt.EventQueue$1AWTInvocationLock)
> at java.lang.Object.wait(Object.java:503)
> at java.awt.EventQueue.invokeAndWait(EventQueue.java:1266)
> - locked <0x00000007ae6730c0> (a java.awt.EventQueue$1AWTInvocationLock)
> at java.awt.EventQueue.invokeAndWait(EventQueue.java:1247)
> at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1349)
> at com.sun.deploy.ui.DialogTemplate.setVisible(Unknown Source)
> at com.sun.deploy.ui.UIFactory$21.execute(Unknown Source)
> at com.sun.javaws.ui.JavawsSysRun$SecureThread.doWork(Unknown Source)
> at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
> - locked <0x00000007b1c1a5c8> (a java.lang.Object)
>
> "AWT-EventQueue-0" prio=10 tid=0x00007f09b42d0800 nid=0x14e5 waiting
> on condition [0x00007f09a019c000]
>    java.lang.Thread.State: WAITING (parking)
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for  <0x00000007b1c1a650> (a
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
> at java.awt.EventQueue.getNextEvent(EventQueue.java:543)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
>
> "AWT-Shutdown" prio=10 tid=0x00007f09b42cf000 nid=0x14e4 in
> Object.wait() [0x00007f09a8152000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1c1ac40> (a java.lang.Object)
> at java.lang.Object.wait(Object.java:503)
> at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:287)
> - locked <0x00000007b1c1ac40> (a java.lang.Object)
> at java.lang.Thread.run(Thread.java:744)
>
> "AWT-XAWT" daemon prio=10 tid=0x00007f09b423c000 nid=0x14e1 runnable
> [0x00007f09a97c1000]
>    java.lang.Thread.State: RUNNABLE
> at sun.awt.X11.XToolkit.waitForEvents(Native Method)
> at sun.awt.X11.XToolkit.run(XToolkit.java:627)
> at sun.awt.X11.XToolkit.run(XToolkit.java:591)
> at java.lang.Thread.run(Thread.java:744)
>
> "Java2D Disposer" daemon prio=10 tid=0x00007f09b421a800 nid=0x14e0 in
> Object.wait() [0x00007f09a9cd2000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1b41440> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
> - locked <0x00000007b1b41440> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
> at sun.java2d.Disposer.run(Disposer.java:145)
> at java.lang.Thread.run(Thread.java:744)
>
> "CacheCleanUpThread" daemon prio=10 tid=0x00007f09b41d2000 nid=0x14df
> in Object.wait() [0x00007f09ab486000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1c59140> (a com.sun.deploy.cache.CleanupThread)
> at java.lang.Object.wait(Object.java:503)
> at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
> - locked <0x00000007b1c59140> (a com.sun.deploy.cache.CleanupThread)
>
> "CacheMemoryCleanUpThread" daemon prio=10 tid=0x00007f09b41ce800
> nid=0x14de in Object.wait() [0x00007f09ab587000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1d13ab8> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
> - locked <0x00000007b1d13ab8> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
> at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown
> Source)
>
> "MemoryCache-DelayedCleanup" daemon prio=10 tid=0x00007f09b41cd000
> nid=0x14dd in Object.wait() [0x00007f09ab688000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1d13b70> (a java.util.TaskQueue)
> at java.util.TimerThread.mainLoop(Timer.java:552)
> - locked <0x00000007b1d13b70> (a java.util.TaskQueue)
> at java.util.TimerThread.run(Timer.java:505)
>
> "traceMsgQueueThread" daemon prio=10 tid=0x00007f09b40c9000 nid=0x14dc
> runnable [0x00007f09abccd000]
>    java.lang.Thread.State: RUNNABLE
> at java.lang.Throwable.getStackTraceElement(Native Method)
> at java.lang.System$2.getStackTraceElement(System.java:1201)
> at java.util.logging.LogRecord.inferCaller(LogRecord.java:535)
> at java.util.logging.LogRecord.getSourceClassName(LogRecord.java:305)
> at java.util.logging.XMLFormatter.format(XMLFormatter.java:131)
> at java.util.logging.StreamHandler.publish(StreamHandler.java:196)
> - locked <0x00000007b1d73e68> (a java.util.logging.FileHandler)
> at java.util.logging.FileHandler.publish(FileHandler.java:575)
> - locked <0x00000007b1d73e68> (a java.util.logging.FileHandler)
> at java.util.logging.Logger.log(Logger.java:610)
> at java.util.logging.Logger.doLog(Logger.java:631)
> at java.util.logging.Logger.log(Logger.java:654)
> at com.sun.deploy.trace.LoggerTraceListener.print(Unknown Source)
> at com.sun.deploy.trace.Trace.firePrintlnEvent(Unknown Source)
> at com.sun.deploy.trace.Trace.access$200(Unknown Source)
> at com.sun.deploy.trace.Trace$TraceMsgQueueChecker.run(Unknown Source)
> at java.lang.Thread.run(Thread.java:744)
>
> "Service Thread" daemon prio=10 tid=0x00007f09b4097000 nid=0x14d9
> runnable [0x0000000000000000]
>    java.lang.Thread.State: RUNNABLE
>
> "C2 CompilerThread1" daemon prio=10 tid=0x00007f09b4094800 nid=0x14d8
> waiting on condition [0x0000000000000000]
>    java.lang.Thread.State: RUNNABLE
>
> "C2 CompilerThread0" daemon prio=10 tid=0x00007f09b4092000 nid=0x14d7
> waiting on condition [0x0000000000000000]
>    java.lang.Thread.State: RUNNABLE
>
> "Signal Dispatcher" daemon prio=10 tid=0x00007f09b4087800 nid=0x14d6
> runnable [0x0000000000000000]
>    java.lang.Thread.State: RUNNABLE
>
> "Finalizer" daemon prio=10 tid=0x00007f09b4070800 nid=0x14d5 in
> Object.wait() [0x00007f09b0bfa000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1b99498> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
> - locked <0x00000007b1b99498> (a java.lang.ref.ReferenceQueue$Lock)
> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
> at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
>
> "Reference Handler" daemon prio=10 tid=0x00007f09b406c800 nid=0x14d4
> in Object.wait() [0x00007f09b0cfb000]
>    java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007b1b98ee8> (a java.lang.ref.Reference$Lock)
> at java.lang.Object.wait(Object.java:503)
> at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
> - locked <0x00000007b1b98ee8> (a java.lang.ref.Reference$Lock)
>
> "VM Thread" prio=10 tid=0x00007f09b406a000 nid=0x14d3 runnable
>
> "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f09b4020800
> nid=0x14ce runnable
>
> "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f09b4022000
> nid=0x14cf runnable
>
> "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f09b4024000
> nid=0x14d0 runnable
>
> "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f09b4026000
> nid=0x14d1 runnable
>
> "VM Periodic Task Thread" prio=10 tid=0x00007f09b40a2000 nid=0x14da
> waiting on condition
>
> ----------------------------------------------------
>
> This is an issue that is really important to us. I will try to take my
> toy-example-solution and integrate it into our real system next week.
> We can probably live with that for a while, as we don't use extension
> bundles for anything. However, we would much prefer a more correct
> solution. Thus, if you need more information from me, I will be happy
> share whatever I know. I will also be happy to test any solution the
> Felix team might come up with on our system.
>
> Oh, btw. Thanks to everyone on the Felix team. We love your product!
>
> Cheers,
>
> Martin Rytter
>
> --
> Martin Rytter - http://martin.ryt.dk
>
> ---------------------------------------------------------------------
> 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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message