Hi. I’m doing some work to update my plugin to support 2025.2. I am able to run a virtual instance of the IDE just fine and am working through getting my test suite to pass.
For a sizable subset of my tests, I am seeing some thread leak errors as a cause of failure. Any ideas as to what might be happening?
I’m using the following dependencies and their respective version
- gradle-intellij-plugin - 2.10.1
- junit - 5.7.0
Here’s an example stack trace:
java.lang.AssertionError: Thread leaked: Thread[#50,Timer-4,5,main] (alive) TIMED_WAITING
--- its stacktrace:
at java.base/java.lang.Object.wait0(Native Method)
at java.base/java.lang.Object.wait(Object.java:366)
at java.base/java.util.TimerThread.mainLoop(Timer.java:563)
at java.base/java.util.TimerThread.run(Timer.java:516)
---
stackTrace.length: 4
Leaking threads dump:
"Timer-4" (alive) TIMED_WAITING
at java.base/java.lang.Object.wait0(Native Method)
at java.base/java.lang.Object.wait(Object.java:366)
at java.base/java.util.TimerThread.mainLoop(Timer.java:563)
at java.base/java.util.TimerThread.run(Timer.java:516)
----
All other threads dump:
"AppKit Thread" (alive) RUNNABLE
"Common-Cleaner" (alive) TIMED_WAITING
at java.base/jdk.internal.misc.Unsafe.park(Native Method)
at java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852)
at java.base/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71)
at java.base/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143)
at java.base/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218)
at java.base/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140)
at java.base/java.lang.Thread.run(Thread.java:1583)
at java.base/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186)
"Signal Dispatcher" (alive) RUNNABLE
"Timer-3" (alive) TIMED_WAITING
at java.base/java.lang.Object.wait0(Native Method)
at java.base/java.lang.Object.wait(Object.java:366)
at java.base/java.util.TimerThread.mainLoop(Timer.java:563)
at java.base/java.util.TimerThread.run(Timer.java:516)
"/127.0.0.1:58249 to /127.0.0.1:58244 workers" (alive) WAITING
at java.base/jdk.internal.misc.Unsafe.park(Native Method)
at java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519)
at java.base/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:4013)
at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3961)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1712)
at org.gradle.internal.remote.internal.hub.queue.EndPointQueue.take(EndPointQueue.java:49)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:403)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
"AWT-EventQueue-0" (alive) WAITING
at java.base/jdk.internal.misc.Unsafe.park(Native Method)
at java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519)
at java.base/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:4013)
at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3961)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1712)
at java.desktop/java.awt.EventQueue.getNextEvent(EventQueue.java:573)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:194)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)