Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Not A Problem
-
2.1.4
-
None
-
None
-
openjdk 11.0.10_9, quickfixj 2.2.0
Description
Hello folks.
We're intermittently encountering the following exception trace with our application that uses quickfixj (which uses apache mina). We're using mina 2.1.4 currently.
We suspect the cause may be a problem within quickfixj, but we wanted to get in touch to share the stack trace, because we found it confusing.
Here's the stack trace:
java.lang.IllegalMonitorStateException java.lang.IllegalMonitorStateException
at java.base/java.lang.Object.notifyAll(Native Method)
at org.apache.mina.filter.ssl.SslHandler.checkStatus(SslHandler.java:544)
at org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:375)
at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:517)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:122)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:643)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:539)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$1200(AbstractPollingIoProcessor.java:68)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1224)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.process(AbstractPollingIoProcessor.java:1213)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:683)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Having looked at the source, we're very confused why this isn't getting caught by the catch block in AbstractPollingIoProcessor::run on line 718 - we reckon IllegalMonitorStateException is a RuntimeException, which is an Exception, and we don't see the ExceptionMonitor rethrowing it...so how did it propagate upwards?!
Do you have any ideas as to what might have happened here? We're starting to wonder if we might have happened on a jdk bug (we're running openjdk 11.0.10_9) but thought it was worth checking in here to check our assumptions first.
Thanks in advance for your help.