my system
Debian 9
java --version
java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
i run my program (that does looots of crawling in parallel) and after a while i am getting:
java.lang.StackOverflowError
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:746)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
at java.base/sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2074)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:854)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:859)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:859)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:859)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:859)
... lots of repeating in this stack trace without any reference to my code
after that:
Starting coordinated shutdown from JVM shutdown hook
And that is the end.
I am using latest jsoup
but i think this bug is related to the JDK and i dont know how to deal with this.
jsoup code/scala (may or may not be relevant)
val con = Jsoup.connect(url)
con.headers(headers.asJava)
con.userAgent(agent)
con.followRedirects(true)
con.validateTLSCertificates(false)
con.ignoreHttpErrors(true)
con.maxBodySize(1024 * 1024 * 3)
con.cookies(lastCookies.asJava)
con.referrer(referrer)
_setup.map(_.proxy.toProxy).foreach(con.proxy)
con.timeout(connectionTimeout.toMillis.toInt)
val r = con.execute()
lastCookies = r.cookies().asScala.toMap[String, String]
val parsed = r.parse()
any suggestions are welcome