https://bugs.kde.org/show_bug.cgi?id=379616

            Bug ID: 379616
           Summary: Deadlock when using SFTP plugin
           Product: kdeconnect
           Version: unspecified
          Platform: Android
                OS: Android 6.x
            Status: UNCONFIRMED
          Severity: major
          Priority: NOR
         Component: android-application
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

It looks like there might be a deadlock condition when stopping SSH server.
Here is threads log:

"Thread-16322@5477" prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks Thread-16322@5477
          at java.lang.Object.wait(Object.java:-1)
          at java.lang.Thread.parkFor$(Thread.java:1220)
          - locked <0x161c> (a java.lang.Object)
          at sun.misc.Unsafe.park(Unsafe.java:299)
          at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
          at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
          at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:970)
          at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1278)
          at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:203)
          at org.apache.sshd.SshServer.stop(SshServer.java:383)
          at org.apache.sshd.SshServer.stop(SshServer.java:363)
          at
org.kde.kdeconnect.Plugins.SftpPlugin.SimpleSftpServer.stop(SimpleSftpServer.java:128)
          at
org.kde.kdeconnect.Plugins.SftpPlugin.SftpPlugin.onDestroy(SftpPlugin.java:59)
          at org.kde.kdeconnect.Device.removePlugin(Device.java:742)
          - locked <0x160a> (a org.kde.kdeconnect.Device)
          at
org.kde.kdeconnect.Device.reloadPluginsFromSettings(Device.java:791)
          at org.kde.kdeconnect.Device.removeLink(Device.java:530)
          at
org.kde.kdeconnect.BackgroundService$5.onConnectionLost(BackgroundService.java:204)
          at
org.kde.kdeconnect.Backends.BaseLinkProvider.connectionLost(BaseLinkProvider.java:54)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider.linkDisconnected(LanLinkProvider.java:89)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLink$1.run(LanLink.java:118)
          at java.lang.Thread.run(Thread.java:818)

"pool-11-thread-1@5478" prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks pool-11-thread-1@5478
          at java.lang.Object.wait(Object.java:-1)
          at java.lang.Thread.parkFor$(Thread.java:1220)
          - locked <0x161d> (a java.lang.Object)
          at sun.misc.Unsafe.park(Unsafe.java:299)
          at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
          at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
          at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1078)
          at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:806)
          at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1036)
          at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
          at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
          at java.lang.Thread.run(Thread.java:818)

"Thread-16332@5482" prio=5 waiting for monitor entry
  java.lang.Thread.State: BLOCKED
         waiting for Thread-16322@5477 to release lock on <0x160a> (a
org.kde.kdeconnect.Device)
          at org.kde.kdeconnect.Device.addPlugin(Device.java:692)
          at
org.kde.kdeconnect.Device.reloadPluginsFromSettings(Device.java:780)
          at org.kde.kdeconnect.Device.addLink(Device.java:507)
          at
org.kde.kdeconnect.BackgroundService$5.onConnectionReceived(BackgroundService.java:181)
          at
org.kde.kdeconnect.Backends.BaseLinkProvider.connectionAccepted(BaseLinkProvider.java:48)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider.addLink(LanLinkProvider.java:290)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider.access$100(LanLinkProvider.java:62)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider$3.handshakeCompleted(LanLinkProvider.java:235)
          at
com.android.org.conscrypt.OpenSSLSocketImpl.notifyHandshakeCompletedListeners(OpenSSLSocketImpl.java:519)
          at
com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:377)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider$4.run(LanLinkProvider.java:255)
          at java.lang.Thread.run(Thread.java:818)

"pool-1-thread-1@5470" prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks pool-1-thread-1@5470
          at java.lang.Object.wait(Object.java:-1)
          at java.lang.Thread.parkFor$(Thread.java:1220)
          - locked <0x161b> (a java.lang.Object)
          at sun.misc.Unsafe.park(Unsafe.java:299)
          at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
          at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
          at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
          at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1036)
          at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
          at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
          at java.lang.Thread.run(Thread.java:818)

"FinalizerDaemon@5465" daemon prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks FinalizerDaemon@5465
          at java.lang.Object.wait(Object.java:-1)
          at java.lang.Object.wait(Object.java:423)
          at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101)
          - locked <0x1572> (a java.lang.ref.ReferenceQueue)
          at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72)
          at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:185)
          at java.lang.Thread.run(Thread.java:818)

"Thread-16233@5474" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
          at libcore.io.Posix.accept(Posix.java:-1)
          at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:63)
          at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:89)
          at java.net.ServerSocket.implAccept(ServerSocket.java:217)
          - locked <0x1583> (a java.net.ServerSocket)
          at java.net.ServerSocket.accept(ServerSocket.java:141)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider$6.run(LanLinkProvider.java:339)
          at java.lang.Thread.run(Thread.java:818)

"Thread-16327@5479" prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks Thread-16327@5479
          at java.lang.Object.wait(Object.java:-1)
          at
org.apache.sshd.common.channel.ChannelPipedInputStream.read(ChannelPipedInputStream.java:85)
          - locked <0x161e> (a org.apache.sshd.common.util.Buffer)
          at libcore.io.Streams.readFully(Streams.java:81)
          at java.io.DataInputStream.readInt(DataInputStream.java:103)
          at
org.apache.sshd.server.sftp.SftpSubsystem.run(SftpSubsystem.java:464)
          at java.lang.Thread.run(Thread.java:818)

"Thread-16329@5480" prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks Thread-16329@5480
          at java.lang.Object.wait(Object.java:-1)
          at
org.apache.sshd.common.channel.ChannelPipedInputStream.read(ChannelPipedInputStream.java:85)
          - locked <0x161f> (a org.apache.sshd.common.util.Buffer)
          at libcore.io.Streams.readFully(Streams.java:81)
          at java.io.DataInputStream.readInt(DataInputStream.java:103)
          at
org.apache.sshd.server.sftp.SftpSubsystem.run(SftpSubsystem.java:464)
          at java.lang.Thread.run(Thread.java:818)

"main@5462" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
          at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-1)
          at android.os.MessageQueue.next(MessageQueue.java:323)
          at android.os.Looper.loop(Looper.java:135)
          at android.app.ActivityThread.main(ActivityThread.java:5458)
          at java.lang.reflect.Method.invoke(Method.java:-1)
          at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

"Thread-16333@5483" prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks Thread-16333@5483
          at java.lang.Object.wait(Object.java:-1)
          at
com.android.org.conscrypt.OpenSSLSocketImpl.waitForHandshake(OpenSSLSocketImpl.java:636)
          - locked <0x1620> (a java.lang.Object)
          at
com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:591)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLink$1.run(LanLink.java:96)
          at java.lang.Thread.run(Thread.java:818)

"FinalizerWatchdogDaemon@5466" daemon prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks FinalizerWatchdogDaemon@5466
          at java.lang.Object.wait(Object.java:-1)
          at
java.lang.Daemons$FinalizerWatchdogDaemon.waitForObject(Daemons.java:255)
          - locked <0x1574> (a java.lang.Daemons$FinalizerWatchdogDaemon)
          at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:227)
          at java.lang.Thread.run(Thread.java:818)

"ReferenceQueueDaemon@5464" daemon prio=5 waiting
  java.lang.Thread.State: WAITING
         blocks ReferenceQueueDaemon@5464
          at java.lang.Object.wait(Object.java:-1)
          at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:147)
          - locked <0x1187> (a java.lang.Class)
          at java.lang.Thread.run(Thread.java:818)

"HeapTaskDaemon@5467" daemon prio=5 waiting for monitor entry
  java.lang.Thread.State: BLOCKED
          at dalvik.system.VMRuntime.runHeapTasks(VMRuntime.java:-1)
          at java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:355)
          at java.lang.Thread.run(Thread.java:818)

"Thread-16231@5472" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
          at libcore.io.Posix.recvfromBytes(Posix.java:-1)
          at libcore.io.Posix.recvfrom(Posix.java:189)
          at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:250)
          at libcore.io.IoBridge.recvfrom(IoBridge.java:549)
          at
java.net.PlainDatagramSocketImpl.doRecv(PlainDatagramSocketImpl.java:163)
          at
java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:171)
          at java.net.DatagramSocket.receive(DatagramSocket.java:274)
          - locked <0x1570> (a java.net.DatagramSocket)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider$5.run(LanLinkProvider.java:317)
          at java.lang.Thread.run(Thread.java:818)

"Thread-16232@5473" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
          at libcore.io.Posix.recvfromBytes(Posix.java:-1)
          at libcore.io.Posix.recvfrom(Posix.java:189)
          at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:250)
          at libcore.io.IoBridge.recvfrom(IoBridge.java:549)
          at
java.net.PlainDatagramSocketImpl.doRecv(PlainDatagramSocketImpl.java:163)
          at
java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:171)
          at java.net.DatagramSocket.receive(DatagramSocket.java:274)
          - locked <0x1586> (a java.net.DatagramSocket)
          at
org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider$5.run(LanLinkProvider.java:317)
          at java.lang.Thread.run(Thread.java:818)

"Signal Catcher@5463" daemon prio=5 waiting
  java.lang.Thread.State: WAITING
         Incompatible thread state: thread not suspended

"Binder_1@5468" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
         Incompatible thread state: thread not suspended

"Binder_2@5469" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
         Incompatible thread state: thread not suspended

"RenderThread@5471" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
         Incompatible thread state: thread not suspended

"hwuiTask1@5475" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
         Incompatible thread state: thread not suspended

"hwuiTask2@5476" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
         Incompatible thread state: thread not suspended

"Binder_3@5481" prio=5 runnable
  java.lang.Thread.State: RUNNABLE
         Incompatible thread state: thread not suspended

 The application seems to be stuck in such state until I manually killed it.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to