David Jencks created FELIX-4287:
-----------------------------------

             Summary: [DS] NPE when calling ComponentInstance.dispose after 
bundle shut down
                 Key: FELIX-4287
                 URL: https://issues.apache.org/jira/browse/FELIX-4287
             Project: Felix
          Issue Type: Bug
          Components: Declarative Services (SCR)
    Affects Versions: scr-1.8.0
            Reporter: David Jencks
            Assignee: David Jencks
             Fix For: scr-1.8.0


There are no checks in the call sequence from ComponentInstance.dispose that 
the component has not already been disposed.  This often causes no problems but 
if the bundle has been shut down and the ComponentInstance is stale this can 
cause an NPE such as (thanks to Pierre de Rop):

java.lang.NullPointerException
      at
org.apache.felix.scr.impl.BundleComponentActivator.unregisterComponentId(BundleComponentActivator.java:500)
      at
org.apache.felix.scr.impl.manager.AbstractComponentManager.clear(AbstractComponentManager.java:1157)
      at
org.apache.felix.scr.impl.manager.SingleComponentManager.clear(SingleComponentManager.java:109)
      at
org.apache.felix.scr.impl.manager.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:890)
      at
org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:576)
      at
org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:561)
      at
org.apache.felix.scr.impl.manager.ComponentContextImpl$ComponentInstanceImpl.dispose(ComponentContextImpl.java:226)
      at
....

I'm going to eliminate the direct cause of the NPE by not unsetting the field 
in BCA but also simplify the deactivate/dispose methods to make the control 
flow clearer and put a disposed check at the top.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to