Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assertion failure when -ea enabled #1427

Closed
realityforge opened this issue Mar 1, 2017 · 2 comments
Closed

Assertion failure when -ea enabled #1427

realityforge opened this issue Mar 1, 2017 · 2 comments
Labels
PR: CLA CLA submitted on PR by the contributor Type: Bug Label issue as a bug defect
Milestone

Comments

@realityforge
Copy link
Contributor

realityforge commented Mar 1, 2017

Description


We are trying to run our local development mode with assertions enabled (i.e. -ea jvm setting) but occasionally run into assertion failures within GlassFish. The following happens frequently enough when there is a JMS MDB present

[2017-03-01T16:16:55.631+1100] [Payara 4.1] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=45 _ThreadName=admin-thread-pool(1)] [timeMillis: 1488345415631] [levelValue: 1000] [[
  Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
java.lang.RuntimeException: EJB Container initialization error
	at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:237)
	at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
	at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:100)
	at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:206)
	at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:314)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:220)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:487)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:466)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:169)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:526)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.AssertionError
	at org.glassfish.common.util.OSGiObjectInputOutputStreamFactoryImpl.loadArrayClass(OSGiObjectInputOutputStreamFactoryImpl.java:221)
	at org.glassfish.common.util.OSGiObjectInputOutputStreamFactoryImpl.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:196)
	at org.glassfish.common.util.OSGiObjectInputOutputStreamFactoryImpl$OSGiObjectInputStream.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:157)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1671)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
	at com.sun.enterprise.naming.util.NamingUtilsImpl$1.run(NamingUtilsImpl.java:125)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.enterprise.naming.util.NamingUtilsImpl.makeCopyOfObject(NamingUtilsImpl.java:123)
	at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.rebind(LocalSerialContextProviderImpl.java:108)
	at com.sun.enterprise.naming.impl.SerialContext.rebind(SerialContext.java:675)
	at com.sun.enterprise.naming.impl.SerialContext.rebind(SerialContext.java:692)
	at javax.naming.InitialContext.rebind(InitialContext.java:437)
	at javax.naming.InitialContext.rebind(InitialContext.java:437)
	at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.publishObject(GlassfishNamingManagerImpl.java:210)
	at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.publishObject(GlassfishNamingManagerImpl.java:196)
	at org.glassfish.resourcebase.resources.naming.ResourceNamingService.publishObject(ResourceNamingService.java:168)
	at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createConnectorConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:190)
	at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createConnectorConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:1416)
	at com.sun.enterprise.connectors.ConnectorRuntime.createConnectorConnectionPool(ConnectorRuntime.java:967)
	at com.sun.enterprise.resource.deployer.ConnectorConnectionPoolDeployer.deployResource(ConnectorConnectionPoolDeployer.java:142)
	at com.sun.enterprise.resource.deployer.ConnectorConnectionPoolDeployer.deployResource(ConnectorConnectionPoolDeployer.java:158)
	at com.sun.enterprise.connectors.service.ConnectorService.loadDeferredResources(ConnectorService.java:233)
	at com.sun.enterprise.connectors.service.ConnectorService$1.run(ConnectorService.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.enterprise.connectors.service.ConnectorService.loadResourcesAndItsRar(ConnectorService.java:150)
	at com.sun.enterprise.connectors.service.ConnectorService.checkAndLoadPool(ConnectorService.java:325)
	at com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl.createConnectorResource(ConnectorResourceAdminServiceImpl.java:99)
	at com.sun.enterprise.connectors.ConnectorRuntime.createConnectorResource(ConnectorRuntime.java:345)
	at com.sun.enterprise.resource.deployer.ConnectorResourceDeployer.createConnectorResource(ConnectorResourceDeployer.java:106)
	at com.sun.enterprise.resource.deployer.ConnectorResourceDeployer.deployResource(ConnectorResourceDeployer.java:84)
	at org.glassfish.resourcebase.resources.api.ResourceProxy.create(ResourceProxy.java:84)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:480)
	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
	at javax.naming.InitialContext.lookup(InitialContext.java:417)
	at javax.naming.InitialContext.lookup(InitialContext.java:417)
	at com.sun.messaging.jms.ra.Util.jndiLookup(Util.java:333)
	at com.sun.messaging.jms.ra.EndpointConsumer._init(EndpointConsumer.java:216)
	at com.sun.messaging.jms.ra.EndpointConsumer.<init>(EndpointConsumer.java:190)
	at com.sun.messaging.jms.ra.ResourceAdapter.endpointActivation(ResourceAdapter.java:460)
	at com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:207)
	at org.glassfish.ejb.mdb.MessageBeanContainer.<init>(MessageBeanContainer.java:252)
	at org.glassfish.ejb.mdb.MessageBeanContainerFactory.createContainer(MessageBeanContainerFactory.java:63)
	at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:224)
	... 43 more

Environment

  • Payara Version: 4.1.1.164
  • Edition: Full
  • JDK Version: 8 Oracle
@smillidge
Copy link
Contributor

Do you use Lambda's in your code base?

@realityforge
Copy link
Contributor Author

Yes we do use lambda ... but looking at the assertion which for reference is

    private Class loadArrayClass(Bundle b, String cname) throws ClassNotFoundException {
        // We are never called with primitive types, so we don't have to check for primitive types.
        assert(cname.charAt(0) == 'L'); // An array

The cname that comes through is "'[Lcom.sun.enterprise.connectors.authentication.ConnectorSecurityMap;" which looks perfectly fine. I think the assertion is just wrong as the 'L' character indicates an object type not an array type. I suspect just changing the assert to assert(cname.charAt(0) == '['); would work.

Although this is a pre-coffee assessment ;)

realityforge added a commit to realityforge/Payara that referenced this issue Mar 2, 2017
@michaelranaldo michaelranaldo added Type: Bug Label issue as a bug defect Reporter Has Fixed labels Mar 3, 2017
@smillidge smillidge added the PR: Awaiting CLA Contributor does not have a CLA or has submitted an unconfirmed CLA. label Mar 3, 2017
@michaelranaldo michaelranaldo added PR: CLA CLA submitted on PR by the contributor and removed PR: Awaiting CLA Contributor does not have a CLA or has submitted an unconfirmed CLA. labels Mar 6, 2017
@OndroMih OndroMih modified the milestones: Payara 4.1.1.171, Payara 172 Apr 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR: CLA CLA submitted on PR by the contributor Type: Bug Label issue as a bug defect
Projects
None yet
Development

No branches or pull requests

4 participants