[
https://issues.apache.org/jira/browse/DIRMINA-813?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12970165#comment-12970165
]
Emmanuel Lecharny edited comment on DIRMINA-813 at 9/5/14 11:04 AM:
--------------------------------------------------------------------
Workaround 1
Closing from an other Thread
http://il.youtube.com/watch?v=3nLCpopO2UM&feature=related
{code}
class CloseThread extends Thread {
public void run() {
serialPort.removeEventListener();
serialPort.close();
}
}
public void closePort() {
try {
if (serialPort != null) {
serialPort.getInputStream().close();
serialPort.getOutputStream().close();
new CloseThread().start();
}
} catch (Exception e) {}
}
{code}
was (Author: christian_schwarz):
Workaround 1
Closing from an other Thread
http://il.youtube.com/watch?v=3nLCpopO2UM&feature=related
class CloseThread extends Thread {
public void run() {
serialPort.removeEventListener();
serialPort.close();
}
}
public void closePort() {
try {
if (serialPort != null) {
serialPort.getInputStream().close();
serialPort.getOutputStream().close();
new CloseThread().start();
}
} catch (Exception e) {}
}
> Starvation occures sometimes in SerialSession#close()
> ------------------------------------------------------
>
> Key: DIRMINA-813
> URL: https://issues.apache.org/jira/browse/DIRMINA-813
> Project: MINA
> Issue Type: Bug
> Components: Transport
> Affects Versions: 2.0.2
> Environment: OS: Win32 XP-Pro
> rxtx Version :2.1.7.4_v20071016
> Reporter: Christian Schwarz
> Fix For: 2.0.8
>
>
> It seems that an starvation occures sometimes when we call close(true) on a
> SerialSession, the method never returns.
> We observed this case with JConsole, they are no Deadlocks detectable, so we
> assume that we have a starvation here.
> Here are the Stack traces of 2 involved Threads :
> ---------------------------------------------------------------------------------------------------
> Name: Thread-17
> State: RUNNABLE
> Total blocked: 0 Total waited: 0
> Stack trace:
> gnu.io.RXTXPort.eventLoop(Native Method)
> gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
> ---------------------------------------------------------------------------------------------------
> Name: Worker-6
> State: TIMED_WAITING
> Total blocked: 32.336 Total waited: 2.860
> Stack trace:
> java.lang.Thread.sleep(Native Method)
> gnu.io.RXTXPort.close(RXTXPort.java:1025)
> - locked gnu.io.RXTXPort@16ba7f9
> org.apache.mina.transport.serial.SerialSessionImpl$SerialIoProcessor.remove(SerialSessionImpl.java:302)
> org.apache.mina.transport.serial.SerialSessionImpl$SerialIoProcessor.remove(SerialSessionImpl.java:1)
> org.apache.mina.core.filterchain.DefaultIoFilterChain$HeadFilter.filterClose(DefaultIoFilterChain.java:634)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterClose(DefaultIoFilterChain.java:525)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:46)
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterClose(DefaultIoFilterChain.java:813)
> org.apache.mina.core.filterchain.IoFilterAdapter.filterClose(IoFilterAdapter.java:143)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterClose(DefaultIoFilterChain.java:525)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:46)
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterClose(DefaultIoFilterChain.java:813)
> org.apache.mina.core.filterchain.IoFilterAdapter.filterClose(IoFilterAdapter.java:143)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterClose(DefaultIoFilterChain.java:525)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:46)
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterClose(DefaultIoFilterChain.java:813)
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterClose(DefaultIoFilterChain.java:740)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterClose(DefaultIoFilterChain.java:525)
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterClose(DefaultIoFilterChain.java:518)
> org.apache.mina.core.session.AbstractIoSession.close(AbstractIoSession.java:272)
> org.apache.mina.core.session.AbstractIoSession.close(AbstractIoSession.java:254)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)