You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Rainer Jung <ra...@kippdata.de> on 2015/11/01 12:09:21 UTC

Re: Plan for Tomcat native 1.2.1

Am 31.10.2015 um 20:17 schrieb Mark Thomas:
> Given the issues with 1.2.0, I'd like to get 1.2.1 out sooner rather
> than later and then use that with 9.0.0.RC1.
>
> I think all the issues discovered so far have been fixed. If you know of
> one that hasn't, please speak up.

I noted a crash in TestWebSocketFrameClientSSL, but Bill Barker said 
"This has been crashing in Gump for a long time", so I guess you are 
aware of that problem.

For details see below.

> Also, don't forget to update the changelog for the fixes you have made.

ACK but most of my changes IMHO do not warrant a changelog entry. Will 
have another look.

> I'm currently planning on tagging 1.2.1 this coming Monday (2015-11-02).

+1

Details for the unit test crash:

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, 
C=native code)
C  [libssl.so.1.0.0+0x302cc]  ssl3_write_bytes+0x52c
C  [libssl.so.1.0.0+0x2da84]  ssl3_write+0x64
C  [libssl.so.1.0.0+0x48a40]  SSL_write+0x40
C  [libtcnative-1.so.0.2.0+0x1ea94]  ssl_socket_send+0x6c
C  [libtcnative-1.so.0.2.0+0x15bac] 
Java_org_apache_tomcat_jni_Socket_sendb+0x70
j  org.apache.tomcat.jni.Socket.sendb(JLjava/nio/ByteBuffer;II)I+78334172
j  org.apache.tomcat.jni.Socket.sendb(JLjava/nio/ByteBuffer;II)I+0
j 
org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper.doWriteInternal()V+89
j 
org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper.doWriteInternal(Z)V+85
j  org.apache.tomcat.util.net.SocketWrapperBase.doWrite(Z)V+2
j  org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking()V+2
j  org.apache.tomcat.util.net.SocketWrapperBase.flush(Z)Z+16
j 
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(Ljavax/websocket/SendHandler;J[Ljava/nio/ByteBuffer;)V+188
j 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$OutputBufferSendHandler.write()V+263
j 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(Lorg/apache/tomcat/websocket/MessagePart;)V+353
j 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(BLjava/nio/ByteBuffer;ZJ)V+177
j 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(Ljava/nio/CharBuffer;Z)V+101
j 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(Ljava/lang/String;)V+33
j 
org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(Ljava/lang/String;)V+5
j 
org.apache.tomcat.websocket.TesterFirehoseServer$Endpoint.onMessage(Ljavax/websocket/Session;Ljava/lang/String;)V+117

...

j 
org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase.onMessage(Ljava/lang/Object;)V+147
j  org.apache.tomcat.websocket.WsFrameBase.sendMessageText(Z)V+142
j  org.apache.tomcat.websocket.WsFrameBase.processDataText()Z+425
j  org.apache.tomcat.websocket.WsFrameBase.processData()Z+41
j  org.apache.tomcat.websocket.WsFrameBase.processInputBuffer()V+81
j  org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable()V+69
j 
org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+64
j 
org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+5
j 
org.apache.coyote.AbstractProcessorLight.process(Lorg/apache/tomcat/util/net/SocketWrapperBase;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+81
j 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapperBase;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+259
j  org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run()V+35
j 
java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5
j  org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run()V+4
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub
V  [libjvm.so+0x750588]  void 
JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0xa58
V  [libjvm.so+0x74e9b4]  void 
JavaCalls::call_virtual(JavaValue*,KlassHandle,Symbol*,Symbol*,JavaCallArguments*,Thread*)+0x370
V  [libjvm.so+0x74ec78]  void 
JavaCalls::call_virtual(JavaValue*,Handle,KlassHandle,Symbol*,Symbol*,Thread*)+0x50
V  [libjvm.so+0x881a7c]  void thread_entry(JavaThread*,Thread*)+0xdc
V  [libjvm.so+0xd64ae4]  void JavaThread::thread_main_inner()+0x94
V  [libjvm.so+0xd64a30]  void JavaThread::run()+0x398
V  [libjvm.so+0xb9f980]  java_start+0x390
C  [libc.so.1+0xd64c0]  _lwp_start+0x8

Before the crash, the test logged:

     [junit] Running org.apache.tomcat.websocket.TestWebSocketFrameClientSSL
     [junit] 30-Oct-2015 23:27:10.759 INFO [main] 
org.apache.catalina.startup.LoggingBaseTest.setUp Starting test case 
[testBug56032]
     [junit] 30-Oct-2015 23:27:11.499 INFO [main] 
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR 
based Apache Tomcat Native library 1.2.0 using APR version 1.5.2.
     [junit] 30-Oct-2015 23:27:11.500 INFO [main] 
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR 
capabilities: IPv6 [true], sendfile [true], accept filters [false], 
random [true].
     [junit] 30-Oct-2015 23:27:11.526 INFO [main] 
org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL 
successfully initialized (OpenSSL 1.0.2d 9 Jul 2015)
     [junit] 30-Oct-2015 23:27:12.709 INFO [main] 
org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler 
["https-apr-127.0.0.1-auto-1"]
     [junit] 30-Oct-2015 23:27:12.781 INFO [main] 
org.apache.catalina.core.StandardService.startInternal Starting service 
Tomcat
     [junit] 30-Oct-2015 23:27:12.782 INFO [main] 
org.apache.catalina.core.StandardEngine.startInternal Starting Servlet 
Engine: Apache Tomcat/9.0.0-dev
     [junit] 30-Oct-2015 23:27:13.586 INFO [main] 
org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler 
[https-apr-127.0.0.1-auto-1-37331]
     [junit] Waiting for server to report an error
     [junit] Received Hello, now sending data
     [junit] 30-Oct-2015 23:32:16.526 INFO [main] 
org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler 
["https-apr-127.0.0.1-auto-1-37331"]
     [junit] 30-Oct-2015 23:32:16.600 INFO [main] 
org.apache.catalina.core.StandardService.stopInternal Stopping service 
Tomcat
     [junit] 30-Oct-2015 23:32:21.621 WARNING [localhost-startStop-2] 
org.apache.tomcat.websocket.WsSession.doClose Failed to flush batched 
messages on session close
     [junit]  java.net.SocketTimeoutException
     [junit]     at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:295)
     [junit]     at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:256)
     [junit]     at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.flushBatch(WsRemoteEndpointImplBase.java:119)
     [junit]     at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.setBatchingAllowed(WsRemoteEndpointImplBase.java:106)
     [junit]     at 
org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:469)
     [junit]     at 
org.apache.tomcat.websocket.WsSession.close(WsSession.java:444)
     [junit]     at 
org.apache.tomcat.websocket.WsWebSocketContainer.destroy(WsWebSocketContainer.java:789)
     [junit]     at 
org.apache.tomcat.websocket.server.WsServerContainer.destroy(WsServerContainer.java:280)
     [junit]     at 
org.apache.tomcat.websocket.server.WsContextListener.contextDestroyed(WsContextListener.java:48)
     [junit]     at 
org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4780)
     [junit]     at 
org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5401)
     [junit]     at 
org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:237)
     [junit]     at 
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1420)
     [junit]     at 
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1409)
     [junit]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     [junit]     at java.lang.Thread.run(Thread.java:745)
     [junit]


Where apr crashed, nio logged the same SocketTimeoutException and then

     [junit] 31-Oct-2015 00:22:04.519 INFO 
[https-nio-127.0.0.1-auto-1-exec-5] 
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doClose 
Failed to close the ServletOutputStream connection cleanly
     [junit]  java.io.IOException: Remaining data in the network buffer, 
can't send SSL close message, force a close with close(true) instead
     [junit]     at 
org.apache.tomcat.util.net.SecureNioChannel.close(SecureNioChannel.java:478)
     [junit]     at 
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.close(NioEndpoint.java:1244)
     [junit]     at 
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doClose(WsRemoteEndpointImplServer.java:172)
     [junit]     at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.close(WsRemoteEndpointImplBase.java:698)
     [junit]     at 
org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:577)
     [junit]     at 
org.apache.tomcat.websocket.WsSession.onClose(WsSession.java:508)
     [junit]     at 
org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.close(WsHttpUpgradeHandler.java:234)
     [junit]     at 
org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:150)
     [junit]     at 
org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
     [junit]     at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:56)
     [junit]     at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:737)
     [junit]     at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1531)
     [junit]     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     [junit]     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     [junit]     at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
     [junit]     at java.lang.Thread.run(Thread.java:745)
     [junit]

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org