Jda: Audio related deadlocks

Created on 16 Jan 2020  路  2Comments  路  Source: DV8FromTheWorld/JDA

After updating from 4.1.0_81 to 4.1.0_93 I started getting these deadlocks.

Note: I was told to make an issue in the support server

Found one Java-level deadlock:
=============================
"JDA [7 / 18] AudioLifeCycle-Worker 1":
  waiting for ownable synchronizer 0x000000061711e818, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
  which is held by "JDA [7 / 18] MainWS-ReadThread"
"JDA [7 / 18] MainWS-ReadThread":
  waiting for ownable synchronizer 0x000000069dbda1d0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "JDA [7 / 18] AudioLifeCycle-Worker 1"

Java stack information for the threads listed above:
===================================================
"JDA [7 / 18] AudioLifeCycle-Worker 1":
    at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
    - parking to wait for  <0x000000061711e818> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt([email protected]/AbstractQueuedSynchronizer.java:885)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared([email protected]/AbstractQueuedSynchronizer.java:1009)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared([email protected]/AbstractQueuedSynchronizer.java:1324)
    at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock([email protected]/ReentrantReadWriteLock.java:738)
    at net.dv8tion.jda.internal.utils.cache.ReadWriteLockCache.readLock(ReadWriteLockCache.java:48)
    at net.dv8tion.jda.internal.utils.cache.AbstractCacheView.get(AbstractCacheView.java:70)
    at net.dv8tion.jda.internal.entities.GuildImpl.getAudioManager(GuildImpl.java:667)
    at net.dv8tion.jda.internal.audio.AudioWebSocket.locked(AudioWebSocket.java:552)
    at net.dv8tion.jda.internal.audio.AudioWebSocket.close(AudioWebSocket.java:153)
    at net.dv8tion.jda.internal.audio.AudioConnection.close(AudioConnection.java:173)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl.lambda$closeAudioConnection$1(AudioManagerImpl.java:146)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl$$Lambda$850/0x0000000840738c40.run(Unknown Source)
    at net.dv8tion.jda.api.utils.MiscUtil.locked(MiscUtil.java:143)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl.closeAudioConnection(AudioManagerImpl.java:142)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl.lambda$closeAudioConnection$0(AudioManagerImpl.java:136)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl$$Lambda$849/0x0000000840738840.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call([email protected]/Executors.java:515)
    at java.util.concurrent.FutureTask.run([email protected]/FutureTask.java:264)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run([email protected]/ScheduledThreadPoolExecutor.java:304)
    at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
    at java.lang.Thread.run([email protected]/Thread.java:834)
"JDA [7 / 18] MainWS-ReadThread":
    at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
    - parking to wait for  <0x000000069dbda1d0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt([email protected]/AbstractQueuedSynchronizer.java:885)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly([email protected]/AbstractQueuedSynchronizer.java:943)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly([email protected]/AbstractQueuedSynchronizer.java:1263)
    at java.util.concurrent.locks.ReentrantLock.lockInterruptibly([email protected]/ReentrantLock.java:317)
    at net.dv8tion.jda.api.utils.MiscUtil.locked(MiscUtil.java:142)
    at net.dv8tion.jda.internal.handle.GuildDeleteHandler.handleInternally(GuildDeleteHandler.java:104)
    at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:36)
    - locked <0x000000066129b3e0> (a net.dv8tion.jda.internal.handle.GuildDeleteHandler)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:847)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:741)
    at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:720)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:885)
    at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
    at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
    at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
    at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
    at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)

Found 1 deadlock.

and

Found one Java-level deadlock:
=============================
"JDA [0 / 1] MainWS-ReadThread":
  waiting for ownable synchronizer 0x0000000725d1a6c8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "JDA [0 / 1] AudioLifeCycle-Worker 1"
"JDA [0 / 1] AudioLifeCycle-Worker 1":
  waiting for ownable synchronizer 0x0000000581ef4d20, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
  which is held by "JDA [0 / 1] MainWS-ReadThread"

Java stack information for the threads listed above:
===================================================
"JDA [0 / 1] MainWS-ReadThread":
    at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
    - parking to wait for  <0x0000000725d1a6c8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt([email protected]/AbstractQueuedSynchronizer.java:885)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly([email protected]/AbstractQueuedSynchronizer.java:943)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly([email protected]/AbstractQueuedSynchronizer.java:1263)
    at java.util.concurrent.locks.ReentrantLock.lockInterruptibly([email protected]/ReentrantLock.java:317)
    at net.dv8tion.jda.api.utils.MiscUtil.locked(MiscUtil.java:142)
    at net.dv8tion.jda.internal.handle.GuildDeleteHandler.handleInternally(GuildDeleteHandler.java:104)
    at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:37)
    - locked <0x0000000581ca6d98> (a net.dv8tion.jda.internal.handle.GuildDeleteHandler)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:843)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:739)
    at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:718)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:881)
    at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
    at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
    at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
    at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
    at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
"JDA [0 / 1] AudioLifeCycle-Worker 1":
    at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
    - parking to wait for  <0x0000000581ef4d20> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt([email protected]/AbstractQueuedSynchronizer.java:885)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared([email protected]/AbstractQueuedSynchronizer.java:1009)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared([email protected]/AbstractQueuedSynchronizer.java:1324)
    at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock([email protected]/ReentrantReadWriteLock.java:738)
    at net.dv8tion.jda.internal.utils.cache.ReadWriteLockCache.readLock(ReadWriteLockCache.java:48)
    at net.dv8tion.jda.internal.utils.cache.AbstractCacheView.get(AbstractCacheView.java:70)
    at net.dv8tion.jda.internal.entities.GuildImpl.getAudioManager(GuildImpl.java:657)
    at net.dv8tion.jda.internal.audio.AudioWebSocket.locked(AudioWebSocket.java:552)
    at net.dv8tion.jda.internal.audio.AudioWebSocket.close(AudioWebSocket.java:153)
    at net.dv8tion.jda.internal.audio.AudioConnection.close(AudioConnection.java:172)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl.lambda$closeAudioConnection$1(AudioManagerImpl.java:146)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl$$Lambda$928/0x0000000840792440.run(Unknown Source)
    at net.dv8tion.jda.api.utils.MiscUtil.locked(MiscUtil.java:143)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl.closeAudioConnection(AudioManagerImpl.java:142)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl.lambda$closeAudioConnection$0(AudioManagerImpl.java:136)
    at net.dv8tion.jda.internal.managers.AudioManagerImpl$$Lambda$927/0x0000000840792040.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call([email protected]/Executors.java:515)
    at java.util.concurrent.FutureTask.run([email protected]/FutureTask.java:264)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run([email protected]/ScheduledThreadPoolExecutor.java:304)
    at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
    at java.lang.Thread.run([email protected]/Thread.java:834)

Found 1 deadlock.
bug completed

Most helpful comment

This should be fixed in 4.1.0_100

All 2 comments

This deadlock is actually a lot older, it should also be possible on the first release of 4.0.0

This should be fixed in 4.1.0_100

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Bungeefan picture Bungeefan  路  6Comments

liovy picture liovy  路  3Comments

MinnDevelopment picture MinnDevelopment  路  5Comments

andrei1058 picture andrei1058  路  6Comments

Frederikam picture Frederikam  路  3Comments