[ https://issues.apache.org/jira/browse/FELIX-3907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13589751#comment-13589751 ]
Richard S. Hall commented on FELIX-3907: ---------------------------------------- Even if we allowed the class loader to remain accessible, this just leads to other errors. For example, if you invoke a method on a held instance that causes it to try to load another class from the bundle (one that hasn't been loaded yet), then it will fail with some sort of zip file not open exception (it may have even already been deleted). In other words, once you are in this state everything is really fragile. If you have threads that are still trying to do stuff, this is generally a sign that someone is either a) not stopping threads when they should (i.e., when their creating bundle is stopped) or b) not releasing objects obtained from stale bundles. You cannot expect class loading to continue normally for a refreshed bundle. > NullPointerException in BundleWiringImpl when m_disposed is true. > ----------------------------------------------------------------- > > Key: FELIX-3907 > URL: https://issues.apache.org/jira/browse/FELIX-3907 > Project: Felix > Issue Type: Bug > Components: Framework > Affects Versions: framework-4.2.0 > Environment: Windows > Reporter: Jad Naous > > NullPointerException caused by lines 1472-1474 of > {{org.apache.felix.framework.BundleWiringImpl}} when {{this.m_disposed == > true}}. I don't know why {{this.m_disposed}} is true, but I'm guessing it's > some sort of race condition. Stack trace follows: > {noformat} > ( Thread-5) [DEBUG] ntegration.NeratiDeployer > java.lang.NullPointerException: null > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1472) > ~[felix.jar:na] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75) > ~[felix.jar:na] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1923) > ~[felix.jar:na] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.lang.ClassLoader.loadClass(ClassLoader.java:247) ~[na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.lang.Class.getDeclaredFields0(Native Method) ~[na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.lang.Class.privateGetDeclaredFields(Class.java:2291) ~[na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.lang.Class.getDeclaredField(Class.java:1880) ~[na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > com.nerati.agent.events.RuntimeRecording.getClassId(RuntimeRecording.java:156) > ~[agent-main-0.0.5-SNAPSHOT.jar:0.0.5-SNAPSHOT] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > com.nerati.agent.events.RuntimeRecording.writeAsJson(RuntimeRecording.java:118) > ~[agent-main-0.0.5-SNAPSHOT.jar:0.0.5-SNAPSHOT] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > com.nerati.agent.client.ControllerClient.processRequest(ControllerClient.java:160) > ~[agent-main-0.0.5-SNAPSHOT.jar:0.0.5-SNAPSHOT] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > com.nerati.agent.client.ControllerClient.putData(ControllerClient.java:131) > ~[agent-main-0.0.5-SNAPSHOT.jar:0.0.5-SNAPSHOT] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > com.nerati.agent.client.ControllerManager.putData(ControllerManager.java:177) > ~[agent-main-0.0.5-SNAPSHOT.jar:0.0.5-SNAPSHOT] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > com.nerati.agent.client.ControllerSendTask.run(ControllerSendTask.java:119) > ~[agent-main-0.0.5-SNAPSHOT.jar:0.0.5-SNAPSHOT] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > [na:1.6.0_37] > ( Thread-5) [DEBUG] ntegration.NeratiDeployer at > java.lang.Thread.run(Thread.java:662) [na:1.6.0_37] > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira