users@grizzly.java.net

Re: URI request buffer overflow results in un-recycled request processing thread.

From: Oleksiy Stashok <oleksiy.stashok_at_oracle.com>
Date: Thu, 27 Oct 2011 11:23:28 +0200

Hello Steve,

I wasn't able to reproduce the issue with Grizzly standalone (w/o
Glassfish).
I see BufferOverflowException (it's expected), but then, next "good"
request on the same thread is processed successfully (200 OK).

Most probably the issue you see is caused by following
NullPointerException, which as you mentioned, breaks postProcess/cleanup
chain.

Pls. file Glassfish issue here:
http://java.net/jira/browse/GLASSFISH

Thanks.

WBR,
Alexey.

On 10/26/2011 06:58 PM, Cochran, Steven Douglas wrote:
>
> Hello.
>
> We are running the GlassFish Server version 3.1.1 build 12 plus
> patches loaded from the private Oracle repository on 8/16/2011.
>
> During testing we noted that the following pair of errors occurred
> following a very large (over 8192 byte) URI sent to the server.
> Thereafter, each time that the thread was reused, it generated the
> same pair of errors, most likely because the second error was not
> caught and caused the thread to be released without the postProcess
> buffer cleanup 'recycle()'. With just a few retries of the long URI,
> we managed to disable all of the domain's request processing threads.
>
> The error was triggered by the buffer overflow and then the unhandled
> null pointer error in the ErrorHandler caused the rest -- the stack
> traces are shown below.
>
> Best regards,
>
> Steve Cochran
>
> [#|2011-10-06T17:13:28.188-0400|SEVERE|oracle-glassfish3.1.1|com.sun.grizzly.config.GrizzlyServiceListener|_ThreadID=28;_ThreadName=Thread-3;|GRIZZLY0039:
> Request URI is too large.
>
> java.nio.BufferOverflowException
>
> at
> com.sun.grizzly.tcp.http11.InternalInputBuffer.fill(InternalInputBuffer.java:765)
>
> at
> com.sun.grizzly.tcp.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:402)
>
> at
> com.sun.grizzly.http.ProcessorTask.parseRequest(ProcessorTask.java:861)
>
> at
> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:692)
>
> at
> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
>
> at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
>
> at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>
> at
> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>
> at
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>
> at
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>
> at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>
> at java.lang.Thread.run(Thread.java:662)
>
> |#]
>
> [#|2011-10-06T17:13:28.188-0400|SEVERE|oracle-glassfish3.1.1|com.sun.grizzly.config.GrizzlyServiceListener|_ThreadID=28;_ThreadName=Thread-3;|GRIZZLY0051:
> ProcessorTask exception.
>
> java.lang.NullPointerException
>
> at java.nio.CharBuffer.put(CharBuffer.java:896)
>
> at
> com.sun.enterprise.web.accesslog.DefaultAccessLogFormatterImpl.appendRequestInfo(DefaultAccessLogFormatterImpl.java:494)
>
> at
> com.sun.enterprise.web.accesslog.DefaultAccessLogFormatterImpl.appendLogEntry(DefaultAccessLogFormatterImpl.java:264)
>
> at
> com.sun.enterprise.web.PEAccessLogValve.postInvoke(PEAccessLogValve.java:592)
>
> at
> com.sun.enterprise.web.VirtualServer$2.onParsingError(VirtualServer.java:1698)
>
> at
> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:709)
>
> at
> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
>
> at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
>
> at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>
> at
> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>
> at
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>
> at
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>
> at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>
> at java.lang.Thread.run(Thread.java:662)
>
> |#]
>
> ------------------------------------------------------------------------
>
> Steven Douglas Cochran, Ph.D.
>
> Senior Systems Analyst, University of Pittsburgh
>
> SVC HS Information Technology, Scaife Hall, Suite M200
>
> 3550 Terrace Street, Pittsburgh, PA 15261
>
> Voice: +1 (412) 624-9282; FAX: +1 (412) 648-8865
>