You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Tom Watson (Jira)" <ji...@apache.org> on 2020/11/13 17:45:00 UTC

[jira] [Closed] (FELIX-6314) NullPointerException in SingleComponentManager.disposeImplementationObject

     [ https://issues.apache.org/jira/browse/FELIX-6314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tom Watson closed FELIX-6314.
-----------------------------
    Assignee: Tom Watson

This should have been closed along with the 2.1.22 release.

> NullPointerException in SingleComponentManager.disposeImplementationObject
> --------------------------------------------------------------------------
>
>                 Key: FELIX-6314
>                 URL: https://issues.apache.org/jira/browse/FELIX-6314
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-2.1.20
>            Reporter: Tom Watson
>            Assignee: Tom Watson
>            Priority: Major
>             Fix For: scr-2.1.22
>
>
> Got the following NPE.  Not sure on the scenario that causes it.  It does appear that org.apache.felix.scr.impl.manager.ServiceFactoryComponentManager.deleteComponent(int) will clear the org.apache.felix.scr.impl.manager.ServiceFactoryComponentManager.serviceContexts set outside of a lock and that the implementation of ServiceFactoryComponentManager.ungetService does not account for this.
> {quote}
> FrameworkEvent ERROR org.osgi.framework.ServiceException: Exception in org.apache.felix.scr.impl.manager.ServiceFactoryComponentManager.ungetService()
>         at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryUngetService(ServiceFactoryUse.java:275)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.ungetService(ServiceFactoryUse.java:163)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.ungetService(ServiceConsumer.java:53)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:615)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.ungetService(ServiceRegistry.java:573)
>         at org.eclipse.osgi.internal.framework.BundleContextImpl.ungetService(BundleContextImpl.java:728)
>         at org.apache.felix.scr.impl.manager.SingleRefPair.safeUngetService(SingleRefPair.java:109)
>         at org.apache.felix.scr.impl.manager.SingleRefPair.ungetServiceObjects(SingleRefPair.java:74)
>         at org.apache.felix.scr.impl.manager.DependencyManager$AbstractCustomizer.ungetService(DependencyManager.java:224)
>         at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.close(DependencyManager.java:1233)
>         at org.apache.felix.scr.impl.manager.DependencyManager.deactivate(DependencyManager.java:1375)
>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateDependencyManagers(AbstractComponentManager.java:1241)
>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:833)
>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:806)
>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:585)
>         at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.disposeComponents(ConfigurableComponentHolder.java:717)
>         at org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:532)
>         at org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:609)
>         at org.apache.felix.scr.impl.Activator.access$300(Activator.java:69)
>         at org.apache.felix.scr.impl.Activator$ScrExtension.destroy(Activator.java:452)
>         at org.apache.felix.scr.impl.AbstractExtender$1.run(AbstractExtender.java:216)
>         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>         at org.apache.felix.scr.impl.AbstractExtender.destroyExtension(AbstractExtender.java:238)
>         at org.apache.felix.scr.impl.AbstractExtender.bundleChanged(AbstractExtender.java:132)
>         at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:215)
>         at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:973)
>         at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
>         at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
>         at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:235)
>         at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:141)
>         at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:133)
>         at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
>         at org.eclipse.osgi.container.Module.publishEvent(Module.java:498)
>         at org.eclipse.osgi.container.Module.doStop(Module.java:656)
>         at org.eclipse.osgi.container.Module.stop(Module.java:520)
>         at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.decStartLevel(ModuleContainer.java:1885)
>         at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1760)
>         at org.eclipse.osgi.container.SystemModule.stopWorker(SystemModule.java:275)
>         at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.stopWorker(EquinoxBundle.java:202)
>         at org.eclipse.osgi.container.Module.doStop(Module.java:658)
>         at org.eclipse.osgi.container.Module.stop(Module.java:520)
>         at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
>         at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:220)
>         at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.NullPointerException
>         at org.apache.felix.scr.impl.manager.SingleComponentManager.disposeImplementationObject(SingleComponentManager.java:400)
>         at org.apache.felix.scr.impl.manager.ServiceFactoryComponentManager.ungetService(ServiceFactoryComponentManager.java:171)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$2.run(ServiceFactoryUse.java:265)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$2.run(ServiceFactoryUse.java:1)
>         at java.base/java.security.AccessController.doPrivileged(AccessController.java:678)
>         at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryUngetService(ServiceFactoryUse.java:262)
>         ... 44 more
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)