On 28/04/17 21:17, Matt Cosentino wrote:
> Tomcat crashed on us today, here is an excerpt from the crash log:

The full log would be more helpful.

> Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
> J 19003  org.apache.tomcat.jni.Socket.sendb(JLjava/nio/ByteBuffer;II)I (0 
> bytes) @ 0x000000000599a2df [0x000000000599a280+0x5f]
> J 42307 C2 org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking()V (90 
> bytes) @ 0x0000000002663b84 [0x00000000026632e0+0x8a4]
> J 38363 C2 org.apache.tomcat.util.net.SocketWrapperBase.flush(Z)Z (20 bytes) 
> @ 0x00000000046e5a18 [0x00000000046e59e0+0x38]
> j  
> org.apache.coyote.http2.Http2UpgradeHandler.sendStreamReset(Lorg/apache/coyote/http2/StreamException;)V+128
> j  
> org.apache.coyote.http2.Stream.close(Lorg/apache/coyote/http2/Http2Exception;)V+76
> J 43733 C2 org.apache.coyote.http2.StreamRunnable.run()V (12 bytes) @ 
> 0x000000000af4d104 [0x000000000af4c720+0x9e4]
> J 36891 C1 
> java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
>  (225 bytes) @ 0x0000000009a7797c [0x0000000009a76940+0x103c]
> J 41848 C1 java.util.concurrent.ThreadPoolExecutor$Worker.run()V (9 bytes) @ 
> 0x0000000003ff180c [0x0000000003ff1700+0x10c]
> J 41853 C1 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run()V 
> (25 bytes) @ 0x0000000007e8194c [0x0000000007e81840+0x10c]
> J 30379 C1 java.lang.Thread.run()V (17 bytes) @ 0x000000000170dac4 
> [0x000000000170d980+0x144]
> v  ~StubRoutines::call_stub
> 
> In my web application log I found this at the same time:
> 
> 
> org.apache.coyote.CloseNowException: Connection [389], Stream [67], This 
> stream is not writable
> 
> at 
> org.apache.coyote.http2.Http2UpgradeHandler.reserveWindowSize(Http2UpgradeHandler.java:755)
> 
> at org.apache.coyote.http2.Stream$StreamOutputBuffer.flush(Stream.java:721)
> 
> at org.apache.coyote.http2.Stream$StreamOutputBuffer.doWrite(Stream.java:682)
> 
> at org.apache.coyote.Response.doWrite(Response.java:522)
> 
> at 
> org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351)
> 
> 
> There were more for additional streams at this same time. I've seen quite a 
> few of these CloseNowExceptions since upgrading to 8.5.14 from 8.5.11, but 
> this is the first time it has crashed Tomcat. What could be the cause? What 
> should I be looking for?

Generally, the cause is a bug where the socket is closed multiple times.
APR is particularly sensitive to that because of the native code. If you
open a bug and attach the full crash log we can take a look. It rarely
shows exactly where the problem is but we might get some pointers. We
typically need to find the problems via code inspection.

In terms of a way to avoid it, I'd suggest using the NIO connector with
the OpenSSL TLS engine rather than APR. In most cases performance is
comparable and because the native code is used for less of the I/O, the
chances of crashes is reduced.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to