Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
[GLASSFISH-17150] GF throws NPE when IE9 closes connection before the execution of doGet in a servlet is ready. Created: 05/Aug/11 Updated: 02/Sep/11 Resolved: 15/Aug/11 Status: Project: Component/s: Affects Version/s: Fix Version/s: Resolved glassfish grizzly-kernel 3.1.1 3.1.2 Bug Type: Priority: Wasomumba Reporter: Assignee: Resolution: Fixed Votes: None Labels: Not Specified Remaining Estimate: Time Spent: Not Specified Not Specified Original Estimate: Environment: Windows 7 Enterprise 64 bit. JVM 1.7 32 Bit Aug 05, 2011 12:45:43 PM com.sun.enterprise.admin.launcher.GFLauncherLogger info Information: JVM invocation command line: D:\Java\jdk1.7.0\bin\java.exe -cp D:/Java/glassfish3/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOptions -XX:MaxPermSize=192m -XX:NewRatio=2 -Xmx512m -javaagent :/Java/glassfish3/glassfish/lib/monitor/flashlight-agent.jar -client -Dfelix.fileinstall.disableConfigSave=false -Djavax.net.ssl.keyStore=D:\Java\glassfish3\glassfish\domains\domain1/config/keystore.jks -Djava.awt.headless=true -Dfelix.fileinstall.poll=5000 -Djava.endorsed.dirs=D:\Java\glassfish3\glassfish/modules/endorsed;D:\Java\glassfish3\glassfish -Dfelix.fileinstall.bundles.startTransient=true -Djavax.net.ssl.trustStore=D:\Java\glassfish3\glassfish\domains\domain1/config/cacerts.jks -Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as -DANTLR_USE_DIRECT_CLASS_LOADING=true -Djava.security.auth.login.config=D:\Java\glassfish3\glassfish\domains\domain1/config/login.co -nointeractive -Dosgi.shell.telnet.maxconn=1 -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver -Dfelix.fileinstall.dir=D:\Java\glassfish3\glassfish/modules/autostart/ -Dosgi.shell.telnet.port=6666 -Djava.security.policy=D:\Java\glassfish3\glassfish\domains\domain1/config/server.policy -Dfelix.fileinstall.log.level=2 -Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serve -Dosgi.shell.telnet.ip=127.0.0.1 -Dcom.sun.aas.instanceRoot=D:\Java\glassfish3\glassfish\domains\domain1 -Dcom.sun.aas.installRoot=D:\Java\glassfish3\glassfish -Djava.ext.dirs=D:\Java\jdk1.7.0/lib/ext;D:\Java\jdk1.7.0/jre/lib/ext;D:\Java\glassfish3\glassfish\ -Dfelix.fileinstall.bundles.new.start=true Dorg.glassfish.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runti -Djava.library.path=D:/Java/glassfish3/glassfish/lib;D:/Java/jdk1.7.0/bin;C:/Windows/Sun/Java/b (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java/jre7/bin;C:/Program Files (x86)/Java/jre7/ Studio/7.0/bin;C:/Users/Public/Documents/RAD Studio/7.0/Bpl;C:/Program Files (x86)/Pervasiv Software/PSQL/bin;C:/Windows/System32/wbem;C:/Windows/System32/WindowsPowerShell/ com.sun.enterprise.glassfish.bootstrap.ASMain -domainname domain1 -asadmin-args --domaindir,,,D:\Java\glassfish3\glassfish\domains,,,domain1 -instancename server -verbose true -debug false -asadmin-classpath D:/Java/glassfish3/glassfish/modules/admin-cli.jar -asadmin-classname com.sun.enterprise.admin.cli.AsadminMain -upgrade false -type DAS -domaindir D:/Java/glassfish3/glassfish/domains/domain1 -read-stdin true Attachments: Issue Links: grizzly-utils.jar Dependency depends on GLASSFISH17270 Integrate Grizzly 1.9.37 into Glassfi... Resolved Description If the doGet method is not ready if Internet Explorer 9 (32 Bit) on localhost closes the connection, a NPE is thro simple test servlet: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { Thread.sleep(5000); } catch (InterruptedException e) { //ignored } PrintWriter out = response.getWriter(); out.print("<HTML><BODY>Hallo</BODY></HTML>"); out.close(); } If you open the page in IE9, the text "Hallo" is shown. Now press F5 and hold the key down for a few seconds. A stack trace on the GF log: [#|2011-0805T12:46:46.311+0200|WARNING|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.we thread-pool-8080(3);|StandardWrapperValve[de.aidaorga.npetest.Test]: PWC1406: Servlet.service() for servlet d java.lang.NullPointerException at com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectionKeyHandler$CloseHandler.notifyClosed(Mon at com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectionKeyHandler$CloseHandler.remotlyClosed(M at com.sun.grizzly.BaseSelectionKeyHandler.notifyRemotlyClose(BaseSelectionKeyHandler.java:233) at com.sun.grizzly.util.OutputWriter.notifyRemotelyClosed(OutputWriter.java:353) at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:148) at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:76) at com.sun.grizzly.http.SocketChannelOutputBuffer.flushChannel(SocketChannelOutputBuffer.java:326) at com.sun.grizzly.http.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:398) at com.sun.grizzly.http.SocketChannelOutputBuffer.endRequest(SocketChannelOutputBuffer.java:389) at com.sun.grizzly.http.ProcessorTask.action(ProcessorTask.java:1090) at com.sun.grizzly.tcp.Response.action(Response.java:268) at com.sun.grizzly.tcp.Response.finish(Response.java:412) at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:341) at org.apache.catalina.connector.CoyoteWriter.close(CoyoteWriter.java:172) at de.aidaorga.npetest.Test.doGet(Test.java:43) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java: at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) 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:722) Comments Comment by Wasomumba [ 05/Aug/11 ] If you change teh do Get method to protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { Thread.sleep(5000); } catch (InterruptedException e) { //ignored } } you get the following stack trace: [#|2011-0805T12:53:57.126+0200|WARNING|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.we thread-pool-8080(4);|Response Error during finishResponse java.lang.NullPointerException at com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectionKeyHandler$CloseHandler.notifyClosed(Mon at com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectionKeyHandler$CloseHandler.remotlyClosed(M at com.sun.grizzly.BaseSelectionKeyHandler.notifyRemotlyClose(BaseSelectionKeyHandler.java:233) at com.sun.grizzly.util.OutputWriter.notifyRemotelyClosed(OutputWriter.java:353) at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:148) at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:76) at com.sun.grizzly.http.SocketChannelOutputBuffer.flushChannel(SocketChannelOutputBuffer.java:326) at com.sun.grizzly.http.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:398) at com.sun.grizzly.http.SocketChannelOutputBuffer.endRequest(SocketChannelOutputBuffer.java:389) at com.sun.grizzly.http.ProcessorTask.action(ProcessorTask.java:1090) at com.sun.grizzly.tcp.Response.action(Response.java:268) at com.sun.grizzly.tcp.Response.finish(Response.java:412) at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:341) at org.apache.catalina.connector.Response.finishResponse(Response.java:582) at org.apache.catalina.connector.CoyoteAdapter.afterService(CoyoteAdapter.java:370) at com.sun.enterprise.v3.services.impl.ContainerMapper.afterService(ContainerMapper.java:366) at com.sun.grizzly.http.ProcessorTask.finishResponse(ProcessorTask.java:760) at com.sun.grizzly.http.ProcessorTask.postResponse(ProcessorTask.java:750) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:726) 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:722) Comment by oleksiys [ 05/Aug/11 ] we'll definitely take a look into this. meanwhile, can i ask you to try the same usecase with jdk6? Comment by Wasomumba [ 05/Aug/11 ] Exactly the same with JDK6. Comment by oleksiys [ 12/Aug/11 ] correspondent Grizzly issue http://java.net/jira/browse/GRIZZLY-1060 Comment by oleksiys [ 12/Aug/11 ] patch for GF 3.1.1 Comment by oleksiys [ 12/Aug/11 ] can you pls. apply the attached patch (grizzly-utils.jar), by copying it to glassfish3/glassfish/modules folder? pls. let me know if it fixed the problem. Thanks. Comment by dan_ [ 12/Aug/11 ] in my project the error message is gone. Thank you! Comment by oleksiys [ 15/Aug/11 ] fixed Comment by shreedhar_ganapathy [ 01/Sep/11 ] Could you update Fix Version to 3.1.2_<buildnumber> if the jar has been integrated into GF?Next upcoming bu Comment by oleksiys [ 02/Sep/11 ] umbrella issue http://java.net/jira/browse/GLASSFISH-17270 Generated at Wed May 03 07:02:04 UTC 2017 using JIRA 6.2.3#6260sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.