Bug 63837

Summary: 7.0.97: TestAbstractAjpProcessor hangs when run with Java 13.0 and NIO.
Product: Tomcat 7 Reporter: Konstantin Kolinko <knst.kolinko>
Component: ConnectorsAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED DUPLICATE    
Severity: normal    
Priority: P2    
Version: trunk   
Target Milestone: ---   
Hardware: PC   
OS: All   
Attachments: ant_test.log
6852_stack.txt

Description Konstantin Kolinko 2019-10-11 12:29:55 UTC
Testing a release candidate for 7.0.97:

The test TestAbstractAjpProcessor hangs when I run it with Java 13 (13u0 64-bit from Oracle, running on Windows 10) and it uses a NIO connector.

If I kill the hung JVM, it completes normally for other connectors (APR, BIO).

Note: The code was previously run with Java 6 and Java 7 and the tests were compiled by those runs. I am not sure that the code can be compiled with Java 13 as is (I remember seeing failures, not investigated).


1. I see the following error in the stdout/stderr output of Apache Ant:

    [junit] Oct. 11, 2019 3:08:56 AM org.apache.coyote.AbstractProtocol init
    [junit] SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-nio-127.0.0.1-auto-6-58537"]
    [junit] java.lang.IllegalArgumentException: timeout < 0
    [junit] 	at java.base/sun.nio.ch.ServerSocketAdaptor.setSoTimeout(ServerSocketAdaptor.java:153)
    [junit] 	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:477)
    [junit] 	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:750)
    [junit] 	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:467)
    [junit] 	at org.apache.catalina.connector.Connector.initInternal(Connector.java:951)
    [junit] 	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
    [junit] 	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
    [junit] 	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
    [junit] 	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:826)
    [junit] 	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
    [junit] 	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
    [junit] 	at org.apache.catalina.startup.Tomcat.start(Tomcat.java:456)
    [junit] 	at org.apache.catalina.startup.TomcatBaseTest$TomcatWithFastSessionIDs.start(TomcatBaseTest.java:808)

I guess that is the root cause.

2. If I use jstack.exe to get a stacktrace from hanging JVM, I see a single client thread reading from a connection, and no Tomcat instance running.
Comment 1 Konstantin Kolinko 2019-10-11 12:31:47 UTC
Created attachment 36821 [details]
ant_test.log

stdout/stderr output of Apache Ant.
Comment 2 Konstantin Kolinko 2019-10-11 12:33:28 UTC
Created attachment 36822 [details]
6852_stack.txt

Stacktrace from a hanging JVM. It was created with the following command:

jstack.exe -l -e 6852 >6852_stack.txt
Comment 3 Konstantin Kolinko 2019-10-11 12:56:52 UTC
To reproduce the issue for smoke testing, the AJP connector must be explicitly configured to use the Nio implementation with

protocol="org.apache.coyote.ajp.AjpNioProtocol"

It is not the default implementation of the connector in Tomcat 7.
Comment 4 Remy Maucherat 2019-10-11 15:07:27 UTC
Rainer had reported it before.

*** This bug has been marked as a duplicate of bug 63814 ***