MachinePublishers / jBrowserDriver

A programmable, embeddable web browser driver compatible with the Selenium WebDriver spec -- headless, WebKit-based, pure Java
Other
809 stars 143 forks source link

I'm getting this error "java.lang.NullPointerException: Inflater has been closed" randomly and I don't know why #227

Closed FranAguiar closed 7 years ago

FranAguiar commented 7 years ago

When I execute the tests suite I'm getting this error, not always and the tests doesn't fail. But is weird

java.lang.NullPointerException: Inflater has been closed
at java.util.zip.Inflater.ensureOpen(Inflater.java:389)
at java.util.zip.Inflater.inflate(Inflater.java:257)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:117)
at org.apache.http.client.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:73)
at com.machinepublishers.jbrowserdriver.Util.toBytes(Util.java:98)
at com.machinepublishers.jbrowserdriver.ResponseHandler.handleResponse(ResponseHandler.java:52)
at com.machinepublishers.jbrowserdriver.StreamConnection.getInputStream(StreamConnection.java:402)
at com.sun.webkit.network.URLLoader.receiveResponse(URLLoader.java:501)
at com.sun.webkit.network.URLLoader.doRun(URLLoader.java:163)
at com.sun.webkit.network.URLLoader.lambda$run$98(URLLoader.java:128)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.webkit.network.URLLoader.run(URLLoader.java:127)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

In addition, sometimes this too

java.io.IOException: server certificate change is restricted during renegotiation: https://cdn.jsdelivr.net/webshim/1.12.4/extras/modernizr-custom.js
at com.machinepublishers.jbrowserdriver.StreamConnection.exec(StreamConnection.java:361)
at com.machinepublishers.jbrowserdriver.StreamConnection.getResponseCode(StreamConnection.java:441)
at com.sun.webkit.network.URLLoader.receiveResponse(URLLoader.java:420)
at com.sun.webkit.network.URLLoader.doRun(URLLoader.java:164)
at com.sun.webkit.network.URLLoader.lambda$run$94(URLLoader.java:129)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.webkit.network.URLLoader.run(URLLoader.java:128)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.net.ssl.SSLHandshakeException: server certificate change is restricted during renegotiation
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:292)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1471)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at com.machinepublishers.jbrowserdriver.StreamConnectionClient.execute(StreamConnectionClient.java:175)
at com.machinepublishers.jbrowserdriver.StreamConnection.exec(StreamConnection.java:327)

It is a browser issue or something that I can handle? Thanks

hollingsworthd commented 7 years ago

Not sure on the ssl one. The java.lang.NullPointerException: Inflater has been closed problem I've seen too. Could not pinpoint a cause yet. Googling reveals other Java projects have experienced this too but haven't seen any resolutions. Not sure yet whether it's normal for http traffic or something to worry about.

RagulkumarRaj commented 7 years ago

I have also seen this error couple of times. But the catch is that, if at all I wait for some time after the error occurs for the driver to quit, the complete page is downloaded.

hollingsworthd commented 7 years ago

Combining this with #242