mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stéphane Landelle (JIRA) <j...@apache.org>
Subject [jira] [Updated] (SSHD-666) Nio2Session.close stalled on OSX
Date Thu, 12 May 2016 09:08:12 GMT

     [ https://issues.apache.org/jira/browse/SSHD-666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Stéphane Landelle updated SSHD-666:
-----------------------------------
    Description: 
Hi,

When closing the Nio2Session on OSX, current thread sometimes stalls.

Here's the thread stacktrace:

"sshd-SshClient[78c26b64]-nio2-thread-4" #230 daemon prio=5 os_prio=31 tid=0x00007f978030c800
nid=0xc603 runnable [0x00007000051b1000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.FileDispatcherImpl.close0(Native Method)
    at sun.nio.ch.SocketDispatcher.close(SocketDispatcher.java:55)
    at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implClose(UnixAsynchronousSocketChannelImpl.java:222)
    at sun.nio.ch.AsynchronousSocketChannelImpl.close(AsynchronousSocketChannelImpl.java:144)
    at org.apache.sshd.common.io.nio2.Nio2Session.doCloseImmediately(Nio2Session.java:197)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
    at org.apache.sshd.common.util.closeable.AbstractCloseable.close(AbstractCloseable.java:98)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:56)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:55)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.AbstractCloseable.doCloseImmediately(AbstractCloseable.java:157)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.access$001(AbstractInnerCloseable.java:28)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:51)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.doCloseImmediately(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:55)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.AbstractCloseable.doCloseImmediately(AbstractCloseable.java:157)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.access$001(AbstractInnerCloseable.java:28)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:51)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.doCloseImmediately(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.channel.AbstractChannel.doCloseImmediately(AbstractChannel.java:622)
    at org.apache.sshd.client.channel.ChannelSession.doCloseImmediately(ChannelSession.java:159)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:65)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.channel.AbstractChannel.handleClose(AbstractChannel.java:436)
    at org.apache.sshd.common.session.helpers.AbstractConnectionService.channelClose(AbstractConnectionService.java:425)
    at org.apache.sshd.common.session.helpers.AbstractConnectionService.process(AbstractConnectionService.java:308)
    at org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:530)
    at org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:463)
    - locked <0x00000007b4d27fd0> (a java.lang.Object)
    at org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1325)
    at org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:424)
    - locked <0x00000007b4fb9bd0> (a java.lang.Object)
    at org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:67)
    at org.apache.sshd.common.io.nio2.Nio2Session.handleReadCycleCompletion(Nio2Session.java:285)
    at org.apache.sshd.common.io.nio2.Nio2Session$2.onCompleted(Nio2Session.java:265)
    at org.apache.sshd.common.io.nio2.Nio2Session$2.onCompleted(Nio2Session.java:262)
    at org.apache.sshd.common.io.nio2.Nio2CompletionHandler$1.run(Nio2CompletionHandler.java:37)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.sshd.common.io.nio2.Nio2CompletionHandler.completed(Nio2CompletionHandler.java:34)
    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
    at sun.nio.ch.Invoker$2.run(Invoker.java:218)
    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
    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)
   Locked ownable synchronizers:
    - <0x00000007b4d0d0f0> (a java.util.concurrent.ThreadPoolExecutor$Worker)

I've only found a few references on such bug:
https://github.com/functional-streams-for-scala/fs2/issues/275
https://github.com/netty/netty/issues/852

This is most likely a Darwin/NIO2 bug but I wanted to let you know about it and ask if you
add an idea to work around this.

Regards

================
EDIT 1: It seems I can't comment on my own issue and so I can't answer to 
Lyor Goldstein's suggestion. :(

We also tried with the Mina factory. Things are also very bad: the "sshd-SshClient[68d28c46]-mina-thread-XXX"
threads spin infinitely and lock the cores they're running on. With mina 2.0.10, we don't
get any log, but we do with 2.0.13, where we get flooded with the following log:

"[info] 18:23:59.485 [WARN ] o.a.m.c.s.IoProcessor - Create a new selector. Selected is 0,
delta = 0"

With either factory, it seems sshd is broken on OSX. Even if it's not an issue in production,
it really is on development where OSX is our main platform.

Any help would be greatly appreciated, we'd rather not drop sshd for another library. We can
help debugging and testing, please advice.

  was:
Hi,

When closing the Nio2Session on OSX, current thread sometimes stalls.

Here's the thread stacktrace:

"sshd-SshClient[78c26b64]-nio2-thread-4" #230 daemon prio=5 os_prio=31 tid=0x00007f978030c800
nid=0xc603 runnable [0x00007000051b1000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.FileDispatcherImpl.close0(Native Method)
    at sun.nio.ch.SocketDispatcher.close(SocketDispatcher.java:55)
    at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implClose(UnixAsynchronousSocketChannelImpl.java:222)
    at sun.nio.ch.AsynchronousSocketChannelImpl.close(AsynchronousSocketChannelImpl.java:144)
    at org.apache.sshd.common.io.nio2.Nio2Session.doCloseImmediately(Nio2Session.java:197)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
    at org.apache.sshd.common.util.closeable.AbstractCloseable.close(AbstractCloseable.java:98)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:56)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:55)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.AbstractCloseable.doCloseImmediately(AbstractCloseable.java:157)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.access$001(AbstractInnerCloseable.java:28)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:51)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.doCloseImmediately(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:55)
    at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.AbstractCloseable.doCloseImmediately(AbstractCloseable.java:157)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.access$001(AbstractInnerCloseable.java:28)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:51)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
    at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.doCloseImmediately(AbstractInnerCloseable.java:47)
    at org.apache.sshd.common.channel.AbstractChannel.doCloseImmediately(AbstractChannel.java:622)
    at org.apache.sshd.client.channel.ChannelSession.doCloseImmediately(ChannelSession.java:159)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
    at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:65)
    at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:46)
    at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
    at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
    at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
    at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
    at org.apache.sshd.common.channel.AbstractChannel.handleClose(AbstractChannel.java:436)
    at org.apache.sshd.common.session.helpers.AbstractConnectionService.channelClose(AbstractConnectionService.java:425)
    at org.apache.sshd.common.session.helpers.AbstractConnectionService.process(AbstractConnectionService.java:308)
    at org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:530)
    at org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:463)
    - locked <0x00000007b4d27fd0> (a java.lang.Object)
    at org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1325)
    at org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:424)
    - locked <0x00000007b4fb9bd0> (a java.lang.Object)
    at org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:67)
    at org.apache.sshd.common.io.nio2.Nio2Session.handleReadCycleCompletion(Nio2Session.java:285)
    at org.apache.sshd.common.io.nio2.Nio2Session$2.onCompleted(Nio2Session.java:265)
    at org.apache.sshd.common.io.nio2.Nio2Session$2.onCompleted(Nio2Session.java:262)
    at org.apache.sshd.common.io.nio2.Nio2CompletionHandler$1.run(Nio2CompletionHandler.java:37)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.sshd.common.io.nio2.Nio2CompletionHandler.completed(Nio2CompletionHandler.java:34)
    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
    at sun.nio.ch.Invoker$2.run(Invoker.java:218)
    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
    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)
   Locked ownable synchronizers:
    - <0x00000007b4d0d0f0> (a java.util.concurrent.ThreadPoolExecutor$Worker)

I've only found a few references on such bug:
https://github.com/functional-streams-for-scala/fs2/issues/275
https://github.com/netty/netty/issues/852

This is most likely a Darwin/NIO2 bug but I wanted to let you know about it and ask if you
add an idea to work around this.

Regards

================
EDIT 1: It seems I can't comment on my own issue and so I can't answer to 
Lyor Goldstein's suggestion. :(

We also tried with the Mina factory. Things are also very bad: the thread spins infinitely
and locks the core it's running on. With mina 2.0.10, we don't get any log, but we do with
2.0.13, where we get flooded with the following log:

"[info] 18:23:59.485 [WARN ] o.a.m.c.s.IoProcessor - Create a new selector. Selected is 0,
delta = 0"

With either factory, it seems sshd is broken on OSX. Even if it's not an issue in production,
it really is on development where OSX is our main platform.

Any help would be greatly appreciated, we'd rather not drop sshd for another library. We can
help debugging and testing, please advice.


> Nio2Session.close stalled on OSX
> --------------------------------
>
>                 Key: SSHD-666
>                 URL: https://issues.apache.org/jira/browse/SSHD-666
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 1.1.1, 1.2.0
>         Environment: OSX
>            Reporter: Stéphane Landelle
>
> Hi,
> When closing the Nio2Session on OSX, current thread sometimes stalls.
> Here's the thread stacktrace:
> "sshd-SshClient[78c26b64]-nio2-thread-4" #230 daemon prio=5 os_prio=31 tid=0x00007f978030c800
nid=0xc603 runnable [0x00007000051b1000]
>    java.lang.Thread.State: RUNNABLE
>     at sun.nio.ch.FileDispatcherImpl.close0(Native Method)
>     at sun.nio.ch.SocketDispatcher.close(SocketDispatcher.java:55)
>     at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implClose(UnixAsynchronousSocketChannelImpl.java:222)
>     at sun.nio.ch.AsynchronousSocketChannelImpl.close(AsynchronousSocketChannelImpl.java:144)
>     at org.apache.sshd.common.io.nio2.Nio2Session.doCloseImmediately(Nio2Session.java:197)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable.close(AbstractCloseable.java:98)
>     at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:56)
>     at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:46)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
>     at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
>     at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
>     at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:55)
>     at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:46)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
>     at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
>     at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable.doCloseImmediately(AbstractCloseable.java:157)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.access$001(AbstractInnerCloseable.java:28)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:51)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:47)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.doCloseImmediately(AbstractInnerCloseable.java:47)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
>     at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
>     at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
>     at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:55)
>     at org.apache.sshd.common.util.closeable.ParallelCloseable$1.operationComplete(ParallelCloseable.java:46)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
>     at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
>     at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable.doCloseImmediately(AbstractCloseable.java:157)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.access$001(AbstractInnerCloseable.java:28)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:51)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable$1.operationComplete(AbstractInnerCloseable.java:47)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.addListener(DefaultSshFuture.java:159)
>     at org.apache.sshd.common.util.closeable.AbstractInnerCloseable.doCloseImmediately(AbstractInnerCloseable.java:47)
>     at org.apache.sshd.common.channel.AbstractChannel.doCloseImmediately(AbstractChannel.java:622)
>     at org.apache.sshd.client.channel.ChannelSession.doCloseImmediately(ChannelSession.java:159)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:103)
>     at org.apache.sshd.common.util.closeable.AbstractCloseable$1.operationComplete(AbstractCloseable.java:98)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
>     at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
>     at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
>     at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:65)
>     at org.apache.sshd.common.util.closeable.SequentialCloseable$1.operationComplete(SequentialCloseable.java:46)
>     at org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:165)
>     at org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:202)
>     at org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:104)
>     at org.apache.sshd.common.future.DefaultCloseFuture.setClosed(DefaultCloseFuture.java:49)
>     at org.apache.sshd.common.channel.AbstractChannel.handleClose(AbstractChannel.java:436)
>     at org.apache.sshd.common.session.helpers.AbstractConnectionService.channelClose(AbstractConnectionService.java:425)
>     at org.apache.sshd.common.session.helpers.AbstractConnectionService.process(AbstractConnectionService.java:308)
>     at org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:530)
>     at org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:463)
>     - locked <0x00000007b4d27fd0> (a java.lang.Object)
>     at org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1325)
>     at org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:424)
>     - locked <0x00000007b4fb9bd0> (a java.lang.Object)
>     at org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:67)
>     at org.apache.sshd.common.io.nio2.Nio2Session.handleReadCycleCompletion(Nio2Session.java:285)
>     at org.apache.sshd.common.io.nio2.Nio2Session$2.onCompleted(Nio2Session.java:265)
>     at org.apache.sshd.common.io.nio2.Nio2Session$2.onCompleted(Nio2Session.java:262)
>     at org.apache.sshd.common.io.nio2.Nio2CompletionHandler$1.run(Nio2CompletionHandler.java:37)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at org.apache.sshd.common.io.nio2.Nio2CompletionHandler.completed(Nio2CompletionHandler.java:34)
>     at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
>     at sun.nio.ch.Invoker$2.run(Invoker.java:218)
>     at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
>     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)
>    Locked ownable synchronizers:
>     - <0x00000007b4d0d0f0> (a java.util.concurrent.ThreadPoolExecutor$Worker)
> I've only found a few references on such bug:
> https://github.com/functional-streams-for-scala/fs2/issues/275
> https://github.com/netty/netty/issues/852
> This is most likely a Darwin/NIO2 bug but I wanted to let you know about it and ask if
you add an idea to work around this.
> Regards
> ================
> EDIT 1: It seems I can't comment on my own issue and so I can't answer to 
> Lyor Goldstein's suggestion. :(
> We also tried with the Mina factory. Things are also very bad: the "sshd-SshClient[68d28c46]-mina-thread-XXX"
threads spin infinitely and lock the cores they're running on. With mina 2.0.10, we don't
get any log, but we do with 2.0.13, where we get flooded with the following log:
> "[info] 18:23:59.485 [WARN ] o.a.m.c.s.IoProcessor - Create a new selector. Selected
is 0, delta = 0"
> With either factory, it seems sshd is broken on OSX. Even if it's not an issue in production,
it really is on development where OSX is our main platform.
> Any help would be greatly appreciated, we'd rather not drop sshd for another library.
We can help debugging and testing, please advice.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message