Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-dev] Jetty 9.3.10 lethal bug?

hi all,


Please forgive the gigantic stack trace but I believe a bug very similar to 

https://bugs.eclipse.org/bugs/show_bug.cgi?id=441756

is still present in the Jetty 9.3.10


I can reproduce it always on my local system by simply pointing an older system (which uses an old Java HTTP client) to interact with my Jetty server, specifically to download some static files served by the default servlet.



The bug causes the Jetty server to die within seconds with an OutOfMemory error.

I have managed to capture the heap dump and thanks to that the stacktrace that you see below:





===================================================================




 Stacks at the moment of snapshot capture Threads shown: 1 of 223


 qtp1061804750-44741 tid=44741 [RUNNABLE] <--- OutOfMemoryError happened in this thread
java.lang.OutOfMemoryError.<init>() OutOfMemoryError.java:48
java.lang.Throwable.fillInStackTrace(int) Throwable.java
java.lang.Throwable.fillInStackTrace() Throwable.java:783
java.lang.Throwable.<init>(String) Throwable.java:265
java.lang.Exception.<init>(String) Exception.java:66
java.io.IOException.<init>(String) IOException.java:58
sun.nio.ch.FileDispatcherImpl.write0(FileDescriptor, long, int) FileDispatcherImpl.java
sun.nio.ch.SocketDispatcher.write(FileDescriptor, long, int) SocketDispatcher.java:47
sun.nio.ch.IOUtil.writeFromNativeBuffer(FileDescriptor, ByteBuffer, long, NativeDispatcher) IOUtil.java:93
sun.nio.ch.IOUtil.write(FileDescriptor, ByteBuffer, long, NativeDispatcher) IOUtil.java:51
sun.nio.ch.SocketChannelImpl.write(ByteBuffer) SocketChannelImpl.java:471
org.eclipse.jetty.io.ChannelEndPoint.flush(ByteBuffer[]) ChannelEndPoint.java:175
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:839
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967

[ =======  removed ==========] 


org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.shutdownOutput() SslConnection.java:928
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.close(Throwable) SslConnection.java:967
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(ByteBuffer[]) SslConnection.java:893
org.eclipse.jetty.io.WriteFlusher.flush(ByteBuffer[]) WriteFlusher.java:420
org.eclipse.jetty.io.WriteFlusher.write(Callback, ByteBuffer[]) WriteFlusher.java:313
org.eclipse.jetty.io.AbstractEndPoint.write(Callback, ByteBuffer[]) AbstractEndPoint.java:140
org.eclipse.jetty.server.HttpConnection$SendCallback.process() HttpConnection.java:733
org.eclipse.jetty.util.IteratingCallback.processing() IteratingCallback.java:241
org.eclipse.jetty.util.IteratingCallback.iterate() IteratingCallback.java:224
org.eclipse.jetty.server.HttpConnection.send(MetaData$Response, boolean, ByteBuffer, boolean, Callback) HttpConnection.java:521
org.eclipse.jetty.server.HttpChannel.sendResponse(MetaData$Response, ByteBuffer, boolean, Callback) HttpChannel.java:692
org.eclipse.jetty.server.HttpChannel.write(ByteBuffer, boolean, Callback) HttpChannel.java:746
org.eclipse.jetty.server.HttpOutput.write(ByteBuffer, boolean, Callback) HttpOutput.java:179
org.eclipse.jetty.server.HttpOutput.sendContent(ByteBuffer, Callback) HttpOutput.java:676
org.eclipse.jetty.server.HttpOutput.sendContent(HttpContent, Callback) HttpOutput.java:776
org.eclipse.jetty.server.HttpOutput.sendContent(HttpContent) HttpOutput.java:654
org.eclipse.jetty.servlet.DefaultServlet.sendData(HttpServletRequest, HttpServletResponse, boolean, HttpContent, Enumeration) DefaultServlet.java:970
org.eclipse.jetty.servlet.DefaultServlet.doGet(HttpServletRequest, HttpServletResponse) DefaultServlet.java:525
javax.servlet.http.HttpServlet.service(HttpServletRequest, HttpServletResponse) HttpServlet.java:687
javax.servlet.http.HttpServlet.service(ServletRequest, ServletResponse) HttpServlet.java:790
org.eclipse.jetty.servlet.ServletHolder.handle(Request, ServletRequest, ServletResponse) ServletHolder.java:837
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) ServletHandler.java:1689
org.eclipse.jetty.servlets.PushCacheFilter.doFilter(ServletRequest, ServletResponse, FilterChain) PushCacheFilter.java:120
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) ServletHandler.java:1676
org.eclipse.jetty.servlet.ServletHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) ServletHandler.java:581
org.eclipse.jetty.server.handler.ScopedHandler.handle(String, Request, HttpServletRequest, HttpServletResponse) ScopedHandler.java:143
org.eclipse.jetty.security.SecurityHandler.handle(String, Request, HttpServletRequest, HttpServletResponse) SecurityHandler.java:548
org.eclipse.jetty.server.session.SessionHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) SessionHandler.java:226
org.eclipse.jetty.server.handler.ContextHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) ContextHandler.java:1180
org.eclipse.jetty.servlet.ServletHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) ServletHandler.java:511
org.eclipse.jetty.server.session.SessionHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) SessionHandler.java:185
org.eclipse.jetty.server.handler.ContextHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse) ContextHandler.java:1112
org.eclipse.jetty.server.handler.ScopedHandler.handle(String, Request, HttpServletRequest, HttpServletResponse) ScopedHandler.java:141
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(String, Request, HttpServletRequest, HttpServletResponse) ContextHandlerCollection.java:213
org.eclipse.jetty.server.handler.HandlerCollection.handle(String, Request, HttpServletRequest, HttpServletResponse) HandlerCollection.java:119
org.eclipse.jetty.server.handler.HandlerWrapper.handle(String, Request, HttpServletRequest, HttpServletResponse) HandlerWrapper.java:134
org.eclipse.jetty.webapp.logging.ContextLogHandler.handle(String, Request, HttpServletRequest, HttpServletResponse) ContextLogHandler.java:62
org.eclipse.jetty.server.handler.HandlerWrapper.handle(String, Request, HttpServletRequest, HttpServletResponse) HandlerWrapper.java:134
org.eclipse.jetty.server.Server.handle(HttpChannel) Server.java:524
org.eclipse.jetty.server.HttpChannel.handle() HttpChannel.java:319
org.eclipse.jetty.server.HttpConnection.onFillable() HttpConnection.java:253
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded() AbstractConnection.java:273
org.eclipse.jetty.io.FillInterest.fillable() FillInterest.java:95
org.eclipse.jetty.io.ssl.SslConnection.onFillable() SslConnection.java:201
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded() AbstractConnection.java:273
org.eclipse.jetty.io.FillInterest.fillable() FillInterest.java:95
org.eclipse.jetty.io.SelectChannelEndPoint$2.run() SelectChannelEndPoint.java:93
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume() ExecuteProduceConsume.java:303
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume() ExecuteProduceConsume.java:148
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run() ExecuteProduceConsume.java:136
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Runnable) QueuedThreadPool.java:671
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run() QueuedThreadPool.java:589
java.lang.Thread.run() Thread.java:745


======================================================================


This is definitely a bug with the code and I would think a very serious one.


I can confirm that it did not occur with the previous Jetty release, 9.3.8.


If I can help in any ways to get this fixed please let me know.

thanks,
Michele




Back to the top