Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get java.util.concurrent.CancellationException with org.creativescala::doodle:0.24.0 #176

Open
dacr opened this issue Sep 22, 2024 · 6 comments

Comments

@dacr
Copy link

dacr commented Sep 22, 2024

The following script executed using scala-cli 1.4.0 :

//> using scala "3.4.2"
//> using dep "org.creativescala::doodle:0.24.0"

import doodle.image.*
import doodle.core.*
import doodle.syntax.*
import doodle.image.syntax.*
import doodle.syntax.all.*
import doodle.image.syntax.all.*
import doodle.java2d.*
import cats.effect.unsafe.implicits.global

val circle = Image.circle(500).noFill.strokeWidth(2)

val count=50
val circles = {
  1.to(count)
    .map(_.toDouble)
    .map(f => circle.transform(Transform.translate(500d,0d)).scale(f / count, f / count))
    .reduce((i1, i2) => i1.on(i2))
}

circles.draw()

works well with doodle:0.23.0 but crashes with doodle:0.24.0. (I can briefly see the window during less than 1 second)

✘-INT ~/notes/scripts/doodle [master|✚ 6…24]
16:24 $ scl vectorgraphics-doodle-circles.sc
Compiling project (Scala 3.4.2, JVM (21))
Compiled project (Scala 3.4.2, JVM (21))
[hint] ./vectorgraphics-doodle-circles.sc:13:16
[hint] "doodle is outdated, update to 0.24.0"
[hint]      doodle 0.23.0 -> org.creativescala::doodle:0.24.0
[hint] //> using dep "org.creativescala::doodle:0.23.0"
[hint]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^C✘-INT ~/notes/scripts/doodle [master|✚ 5…24]
16:24 $ scl vectorgraphics-doodle-circles.sc
Exception in thread "main" java.util.concurrent.CancellationException
	at java.base/java.util.concurrent.CompletableFuture.cancel(CompletableFuture.java:2510)
	at blocking @ doodle.java2d.effect.Canvas.$init$$$anonfun$1(Canvas.scala:67)
	at fromCompletableFuture @ doodle.java2d.effect.Canvas.$init$$$anonfun$1(Canvas.scala:67)
	at apply @ doodle.java2d.effect.Canvas.close(Canvas.scala:118)
	at >> @ doodle.java2d.effect.Canvas.<init>(Canvas.scala:93)
	at void @ doodle.java2d.effect.Canvas.<init>(Canvas.scala:70)
	at as @ fs2.Stream.merge$$anonfun$1$$anonfun$1$$anonfun$1(Stream.scala:2036)
	at unsafeRunSync @ doodle.syntax.RendererSyntax.runIO(RendererSyntax.scala:26)
	at void @ doodle.java2d.effect.Canvas.<init>(Canvas.scala:70)
	at unsafeRunSync @ doodle.syntax.RendererSyntax.runIO(RendererSyntax.scala:26)
✘-1 ~/notes/scripts/doodle [master|✚ 6…24]
@noelwelsh
Copy link
Contributor

Thanks. I'll look into it.

@noelwelsh
Copy link
Contributor

Alright, I think I've fixed it. I'm not going to close this report immediately, as there might still be issues. I'll make a release soon to allow further testing.

@noelwelsh
Copy link
Contributor

v0.25.0 will be out as soon as CI has finished.

@dacr
Copy link
Author

dacr commented Sep 24, 2024

:) Fixed for the two examples I have just tried.

@dacr
Copy link
Author

dacr commented Sep 26, 2024

There is probably other issues (although not sure at 100%), for example with this animated script is frozen :

// ---------------------
//> using scala "3.5.1"
//> using dep "org.creativescala::doodle:0.25.0"
// ---------------------

import cats.effect.IO
import doodle.core.*
import doodle.syntax.*
import doodle.syntax.all.*
import doodle.interact.*
import doodle.interact.syntax.*
import doodle.interact.syntax.all.*
import doodle.java2d.*
import doodle.java2d.effect.*
import fs2.Stream
import cats.effect.unsafe.implicits.global
import scala.concurrent.duration.{FiniteDuration, MILLISECONDS}

import cats.instances.all._
import cats.syntax.all._

val frame: Frame = Frame(
  size = Size.fixedSize(600, 600),
  title = "Photos",
  center = Center.atOrigin,
  background = Some(Color.midnightBlue),
  redraw = Redraw.clearToBackground
)

val ball =
  -100.0
    .upTo(100.0)
    .map(x =>
      Picture
        .circle(30)
        .fillColor(Color.chartreuse)
        .strokeWidth(3.0)
        .at(x, 0.0)
    )
    .forSteps(100)
    .repeatForever

ball
  .animate(frame)


scala.io.StdIn.readLine("Enter to exit...") // required when run as a script

It also get the same result using a REPL session :
image

@dacr
Copy link
Author

dacr commented Sep 26, 2024

There is probably other issues (although not sure at 100%), for example with this animated script is frozen :

// ---------------------
//> using scala "3.5.1"
//> using dep "org.creativescala::doodle:0.25.0"
// ---------------------

import cats.effect.IO
import doodle.core.*
import doodle.syntax.*
import doodle.syntax.all.*
import doodle.interact.*
import doodle.interact.syntax.*
import doodle.interact.syntax.all.*
import doodle.java2d.*
import doodle.java2d.effect.*
import fs2.Stream
import cats.effect.unsafe.implicits.global
import scala.concurrent.duration.{FiniteDuration, MILLISECONDS}

import cats.instances.all._
import cats.syntax.all._

val frame: Frame = Frame(
  size = Size.fixedSize(600, 600),
  title = "Photos",
  center = Center.atOrigin,
  background = Some(Color.midnightBlue),
  redraw = Redraw.clearToBackground
)

val ball =
  -100.0
    .upTo(100.0)
    .map(x =>
      Picture
        .circle(30)
        .fillColor(Color.chartreuse)
        .strokeWidth(3.0)
        .at(x, 0.0)
    )
    .forSteps(100)
    .repeatForever

ball
  .animate(frame)


scala.io.StdIn.readLine("Enter to exit...") // required when run as a script

It also gives the same result using a REPL session : image

The thread dump :

2024-09-26 19:34:18
Full thread dump OpenJDK 64-Bit Server VM (22+36-nixos mixed mode, sharing):

Threads class SMR info:
_java_thread_list=0x0000762520022140, length=35, elements={
0x00007625f0018570, 0x00007625f0144a30, 0x00007625f0146110, 0x00007625f0147da0,
0x00007625f0149470, 0x00007625f014aaa0, 0x00007625f014c6d0, 0x00007625f014de70,
0x00007625f015c960, 0x00007625f01601f0, 0x00007625f06a5740, 0x00007625f06a6a10,
0x00007625f06a7f40, 0x00007625f06a91f0, 0x00007625f06aa4b0, 0x00007625f06ab770,
0x00007625f06aca40, 0x00007625f06add10, 0x00007625f06af070, 0x00007625f06b0210,
0x00007625f06b1290, 0x00007625f06b2450, 0x00007625f06b3ae0, 0x00007625f06b51a0,
0x00007625f06b67b0, 0x00007625f06b79d0, 0x00007624f8069590, 0x00007624f800e440,
0x00007624f806c580, 0x00007624f806d820, 0x0000762450376650, 0x00007624fc02a560,
0x000076248008f9b0, 0x000076248c084490, 0x000076250406aa10
}

"main" #1 [225987] prio=5 os_prio=0 cpu=416.67ms elapsed=28.77s tid=0x00007625f0018570 nid=225987 waiting on condition  [0x00007625f73fd000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec01168> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@22/LockSupport.java:269)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@22/AbstractQueuedSynchronizer.java:1758)
	at java.util.concurrent.ArrayBlockingQueue.poll(java.base@22/ArrayBlockingQueue.java:435)
	at cats.effect.IOPlatform.$anonfun$1(IOPlatform.scala:80)
	at cats.effect.IOPlatform$$Lambda/0x000076256f1cf9c0.apply(Unknown Source)
	at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:62)
	at scala.concurrent.package$.blocking(package.scala:124)
	at cats.effect.IOPlatform.unsafeRunTimed(IOPlatform.scala:80)
	at cats.effect.IOPlatform.unsafeRunSync(IOPlatform.scala:42)
	at doodle.interact.syntax.AnimationRendererSyntax.runIO(AnimationRendererSyntax.scala:27)
	at doodle.interact.syntax.AnimationRendererSyntax.runIO$(AnimationRendererSyntax.scala:24)
	at doodle.interact.syntax.package$animationRenderer$.runIO(package.scala:29)
	at doodle.interact.syntax.AbstractAnimationRendererSyntax$AnimateToStreamOps.animateFrames(AbstractAnimationRendererSyntax.scala:129)
	at doodle.interact.animation.Transducer.animate(Transducer.scala:371)
	at doodle.interact.animation.Transducer.animate$(Transducer.scala:64)
	at doodle.interact.animation.Transducer$$anon$7.animate(Transducer.scala:337)
	at vectorgraphics$minusdoodle$minusexample$minusanimate$minus1$_.<init>(vectorgraphics-doodle-example-animate-1.sc:54)
	at vectorgraphics$minusdoodle$minusexample$minusanimate$minus1_sc$.script$lzyINIT1(vectorgraphics-doodle-example-animate-1.sc:72)
	at vectorgraphics$minusdoodle$minusexample$minusanimate$minus1_sc$.script(vectorgraphics-doodle-example-animate-1.sc:72)
	at vectorgraphics$minusdoodle$minusexample$minusanimate$minus1_sc$.main(vectorgraphics-doodle-example-animate-1.sc:76)
	at vectorgraphics$minusdoodle$minusexample$minusanimate$minus1_sc.main(vectorgraphics-doodle-example-animate-1.sc)

"Reference Handler" #9 [225995] daemon prio=10 os_prio=0 cpu=0.87ms elapsed=28.75s tid=0x00007625f0144a30 nid=225995 waiting on condition  [0x00007625cd7fa000]
   java.lang.Thread.State: RUNNABLE
	at java.lang.ref.Reference.waitForReferencePendingList(java.base@22/Native Method)
	at java.lang.ref.Reference.processPendingReferences(java.base@22/Reference.java:246)
	at java.lang.ref.Reference$ReferenceHandler.run(java.base@22/Reference.java:208)

"Finalizer" #10 [225996] daemon prio=8 os_prio=0 cpu=0.10ms elapsed=28.75s tid=0x00007625f0146110 nid=225996 in Object.wait()  [0x00007625cd6fa000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait0(java.base@22/Native Method)
	- waiting on <0x000000060ec00078> (a java.lang.ref.NativeReferenceQueue$Lock)
	at java.lang.Object.wait(java.base@22/Object.java:375)
	at java.lang.Object.wait(java.base@22/Object.java:348)
	at java.lang.ref.NativeReferenceQueue.await(java.base@22/NativeReferenceQueue.java:48)
	at java.lang.ref.ReferenceQueue.remove0(java.base@22/ReferenceQueue.java:158)
	at java.lang.ref.NativeReferenceQueue.remove(java.base@22/NativeReferenceQueue.java:89)
	- locked <0x000000060ec00078> (a java.lang.ref.NativeReferenceQueue$Lock)
	at java.lang.ref.Finalizer$FinalizerThread.run(java.base@22/Finalizer.java:173)

"Signal Dispatcher" #11 [225997] daemon prio=9 os_prio=0 cpu=0.11ms elapsed=28.75s tid=0x00007625f0147da0 nid=225997 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Service Thread" #12 [225998] daemon prio=9 os_prio=0 cpu=0.20ms elapsed=28.75s tid=0x00007625f0149470 nid=225998 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Monitor Deflation Thread" #13 [225999] daemon prio=9 os_prio=0 cpu=4.61ms elapsed=28.75s tid=0x00007625f014aaa0 nid=225999 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #14 [226000] daemon prio=9 os_prio=0 cpu=1040.42ms elapsed=28.75s tid=0x00007625f014c6d0 nid=226000 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"C1 CompilerThread0" #22 [226001] daemon prio=9 os_prio=0 cpu=163.22ms elapsed=28.75s tid=0x00007625f014de70 nid=226001 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"Notification Thread" #26 [226002] daemon prio=9 os_prio=0 cpu=0.05ms elapsed=28.75s tid=0x00007625f015c960 nid=226002 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Common-Cleaner" #27 [226003] daemon prio=8 os_prio=0 cpu=1.07ms elapsed=28.75s tid=0x00007625f01601f0 nid=226003 waiting on condition  [0x00007625ccf25000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec028c8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@22/LockSupport.java:269)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@22/AbstractQueuedSynchronizer.java:1847)
	at java.lang.ref.ReferenceQueue.await(java.base@22/ReferenceQueue.java:71)
	at java.lang.ref.ReferenceQueue.remove0(java.base@22/ReferenceQueue.java:143)
	at java.lang.ref.ReferenceQueue.remove(java.base@22/ReferenceQueue.java:218)
	at jdk.internal.ref.CleanerImpl.run(java.base@22/CleanerImpl.java:140)
	at java.lang.Thread.runWith(java.base@22/Thread.java:1583)
	at java.lang.Thread.run(java.base@22/Thread.java:1570)
	at jdk.internal.misc.InnocuousThread.run(java.base@22/InnocuousThread.java:186)

"io-compute-6" #28 [226009] daemon prio=5 os_prio=0 cpu=28.08ms elapsed=28.54s tid=0x00007625f06a5740 nid=226009 waiting on condition  [0x00007625cc925000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-2" #29 [226010] daemon prio=5 os_prio=0 cpu=29.01ms elapsed=28.54s tid=0x00007625f06a6a10 nid=226010 waiting on condition  [0x00007625cc825000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-12" #30 [226011] daemon prio=5 os_prio=0 cpu=137.95ms elapsed=28.54s tid=0x00007625f06a7f40 nid=226011 waiting on condition  [0x00007625cc725000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-10" #31 [226012] daemon prio=5 os_prio=0 cpu=30.43ms elapsed=28.54s tid=0x00007625f06a91f0 nid=226012 waiting on condition  [0x00007625cc625000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-13" #32 [226013] daemon prio=5 os_prio=0 cpu=17.62ms elapsed=28.54s tid=0x00007625f06aa4b0 nid=226013 waiting on condition  [0x00007625cc525000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-1" #33 [226014] daemon prio=5 os_prio=0 cpu=20.12ms elapsed=28.54s tid=0x00007625f06ab770 nid=226014 waiting on condition  [0x00007625cc425000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-3" #34 [226015] daemon prio=5 os_prio=0 cpu=20.35ms elapsed=28.54s tid=0x00007625f06aca40 nid=226015 waiting on condition  [0x00007625cc325000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-15" #35 [226016] daemon prio=5 os_prio=0 cpu=23.80ms elapsed=28.54s tid=0x00007625f06add10 nid=226016 waiting on condition  [0x00007625cc225000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-0" #36 [226028] daemon prio=5 os_prio=0 cpu=20.02ms elapsed=28.54s tid=0x00007625f06af070 nid=226028 waiting on condition  [0x00007625c75f4000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-4" #37 [226029] daemon prio=5 os_prio=0 cpu=31.28ms elapsed=28.54s tid=0x00007625f06b0210 nid=226029 waiting on condition  [0x00007625c74f4000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-5" #38 [226030] daemon prio=5 os_prio=0 cpu=20.82ms elapsed=28.54s tid=0x00007625f06b1290 nid=226030 waiting on condition  [0x00007625c73f4000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-blocker-11" #39 [226031] daemon prio=5 os_prio=0 cpu=6.77ms elapsed=28.54s tid=0x00007625f06b2450 nid=226031 in Object.wait()  [0x00007625c72f3000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait0(java.base@22/Native Method)
	- waiting on <0x000000060ec02c48> (a java.lang.Object)
	at java.lang.Object.wait(java.base@22/Object.java:375)
	at java.lang.Object.wait(java.base@22/Object.java:348)
	at doodle.java2d.effect.BlockingCircularQueue.take(BlockingCircularQueue.scala:68)
	- locked <0x000000060ec02c48> (a java.lang.Object)
	at doodle.java2d.effect.Canvas.pump$$anonfun$1(Canvas.scala:76)
	at doodle.java2d.effect.Canvas$$Lambda/0x000076256f2511e0.apply(Unknown Source)
	at cats.effect.IOFiberPlatform.liftedTree1$1(IOFiberPlatform.scala:66)
	at cats.effect.IOFiberPlatform.$anonfun$1(IOFiberPlatform.scala:72)
	at cats.effect.IOFiberPlatform.$anonfun$adapted$1(IOFiberPlatform.scala:110)
	at cats.effect.IOFiberPlatform$$Lambda/0x000076256f36cf20.apply(Unknown Source)
	at cats.effect.IOFiber.runLoop(IOFiber.scala:1004)
	at cats.effect.IOFiber.execR(IOFiber.scala:1362)
	at cats.effect.IOFiber.run(IOFiber.scala:112)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:743)

"io-compute-blocker-12" #40 [226032] daemon prio=5 os_prio=0 cpu=19.80ms elapsed=28.54s tid=0x00007625f06b3ae0 nid=226032 in Object.wait()  [0x00007625c71f3000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait0(java.base@22/Native Method)
	- waiting on <no object reference available>
	at java.lang.Object.wait(java.base@22/Object.java:375)
	at java.lang.Object.wait(java.base@22/Object.java:348)
	at doodle.java2d.effect.BlockingCircularQueue.take(BlockingCircularQueue.scala:68)
	- locked <0x000000060ec00d40> (a java.lang.Object)
	at doodle.java2d.effect.Canvas.pump$$anonfun$1(Canvas.scala:76)
	at doodle.java2d.effect.Canvas$$Lambda/0x000076256f2511e0.apply(Unknown Source)
	at cats.effect.IOFiberPlatform.liftedTree1$1(IOFiberPlatform.scala:66)
	at cats.effect.IOFiberPlatform.$anonfun$1(IOFiberPlatform.scala:72)
	at cats.effect.IOFiberPlatform.$anonfun$adapted$1(IOFiberPlatform.scala:110)
	at cats.effect.IOFiberPlatform$$Lambda/0x000076256f36cf20.apply(Unknown Source)
	at cats.effect.IOFiber.runLoop(IOFiber.scala:1004)
	at cats.effect.IOFiber.execR(IOFiber.scala:1362)
	at cats.effect.IOFiber.run(IOFiber.scala:112)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:743)

"io-compute-11" #41 [226033] daemon prio=5 os_prio=0 cpu=50.18ms elapsed=28.54s tid=0x00007625f06b51a0 nid=226033 waiting on condition  [0x00007625c70f4000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-8" #42 [226034] daemon prio=5 os_prio=0 cpu=35.32ms elapsed=28.54s tid=0x00007625f06b67b0 nid=226034 waiting on condition  [0x00007625c6ff4000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-14" #43 [226035] daemon prio=5 os_prio=0 cpu=27.82ms elapsed=28.54s tid=0x00007625f06b79d0 nid=226035 waiting on condition  [0x00007625c6ef4000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"Java2D Disposer" #57 [226037] daemon prio=10 os_prio=0 cpu=0.60ms elapsed=28.30s tid=0x00007624f8069590 nid=226037 waiting on condition  [0x00007625c6b8c000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec03b88> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:371)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base@22/AbstractQueuedSynchronizer.java:519)
	at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@22/ForkJoinPool.java:4013)
	at java.util.concurrent.ForkJoinPool.managedBlock(java.base@22/ForkJoinPool.java:3961)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@22/AbstractQueuedSynchronizer.java:1707)
	at java.lang.ref.ReferenceQueue.await(java.base@22/ReferenceQueue.java:67)
	at java.lang.ref.ReferenceQueue.remove0(java.base@22/ReferenceQueue.java:158)
	at java.lang.ref.ReferenceQueue.remove(java.base@22/ReferenceQueue.java:234)
	at sun.java2d.Disposer.run(java.desktop@22/Disposer.java:145)
	at java.lang.Thread.runWith(java.base@22/Thread.java:1583)
	at java.lang.Thread.run(java.base@22/Thread.java:1570)

"AWT-XAWT" #58 [226038] daemon prio=6 os_prio=0 cpu=87.51ms elapsed=28.30s tid=0x00007624f800e440 nid=226038 runnable  [0x00007625c6a8c000]
   java.lang.Thread.State: RUNNABLE
	at sun.awt.X11.XToolkit.waitForEvents(java.desktop@22/Native Method)
	at sun.awt.X11.XToolkit.run(java.desktop@22/XToolkit.java:687)
	at sun.awt.X11.XToolkit.run(java.desktop@22/XToolkit.java:651)
	at java.lang.Thread.runWith(java.base@22/Thread.java:1583)
	at java.lang.Thread.run(java.base@22/Thread.java:1570)

"AWT-Shutdown" #60 [226039] prio=5 os_prio=0 cpu=0.08ms elapsed=28.30s tid=0x00007624f806c580 nid=226039 in Object.wait()  [0x00007625c698c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait0(java.base@22/Native Method)
	- waiting on <0x000000060ec01fb8> (a java.lang.Object)
	at java.lang.Object.wait(java.base@22/Object.java:375)
	at java.lang.Object.wait(java.base@22/Object.java:348)
	at sun.awt.AWTAutoShutdown.run(java.desktop@22/AWTAutoShutdown.java:291)
	- locked <0x000000060ec01fb8> (a java.lang.Object)
	at java.lang.Thread.runWith(java.base@22/Thread.java:1583)
	at java.lang.Thread.run(java.base@22/Thread.java:1570)

"AWT-EventQueue-0" #59 [226040] prio=6 os_prio=0 cpu=433.99ms elapsed=28.30s tid=0x00007624f806d820 nid=226040 waiting on condition  [0x00007625c688b000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec03ce0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:371)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base@22/AbstractQueuedSynchronizer.java:519)
	at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@22/ForkJoinPool.java:4013)
	at java.util.concurrent.ForkJoinPool.managedBlock(java.base@22/ForkJoinPool.java:3961)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@22/AbstractQueuedSynchronizer.java:1707)
	at java.awt.EventQueue.getNextEvent(java.desktop@22/EventQueue.java:565)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(java.desktop@22/EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEventsForFilter(java.desktop@22/EventDispatchThread.java:124)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(java.desktop@22/EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(java.desktop@22/EventDispatchThread.java:109)
	at java.awt.EventDispatchThread.pumpEvents(java.desktop@22/EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.run(java.desktop@22/EventDispatchThread.java:90)

"TimerQueue" #63 [226058] daemon prio=5 os_prio=0 cpu=244.30ms elapsed=28.17s tid=0x0000762450376650 nid=226058 waiting on condition  [0x00007625c5bfe000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec05310> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@22/LockSupport.java:269)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@22/AbstractQueuedSynchronizer.java:1758)
	at java.util.concurrent.DelayQueue.take(java.base@22/DelayQueue.java:254)
	at javax.swing.TimerQueue.run(java.desktop@22/TimerQueue.java:165)
	at java.lang.Thread.runWith(java.base@22/Thread.java:1583)
	at java.lang.Thread.run(java.base@22/Thread.java:1570)

"io-compute-9" #64 [226060] daemon prio=5 os_prio=0 cpu=18.89ms elapsed=28.07s tid=0x00007624fc02a560 nid=226060 waiting on condition  [0x00007625c51fe000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-7" #65 [226061] daemon prio=5 os_prio=0 cpu=17.63ms elapsed=28.06s tid=0x000076248008f9b0 nid=226061 waiting on condition  [0x00007625c47fe000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060ec031a8> (a cats.effect.unsafe.WorkStealingThreadPool)
	at java.util.concurrent.locks.LockSupport.park(java.base@22/LockSupport.java:221)
	at cats.effect.unsafe.WorkerThread.parkLoop$1(WorkerThread.scala:372)
	at cats.effect.unsafe.WorkerThread.park$1(WorkerThread.scala:334)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:660)

"io-compute-blocker-18" #66 [226062] daemon prio=5 os_prio=0 cpu=0.71ms elapsed=28.06s tid=0x000076248c084490 nid=226062 waiting on condition  [0x00007625c46fd000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060eebb6c8> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@22/LockSupport.java:410)
	at java.util.concurrent.LinkedTransferQueue$DualNode.await(java.base@22/LinkedTransferQueue.java:452)
	at java.util.concurrent.LinkedTransferQueue.xfer(java.base@22/LinkedTransferQueue.java:613)
	at java.util.concurrent.LinkedTransferQueue.poll(java.base@22/LinkedTransferQueue.java:1268)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:455)

"io-compute-blocker-19" #67 [226063] daemon prio=5 os_prio=0 cpu=0.36ms elapsed=28.05s tid=0x000076250406aa10 nid=226063 waiting on condition  [0x00007625c45fd000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@22/Native Method)
	- parking to wait for  <0x000000060eebabe8> (a java.util.concurrent.LinkedTransferQueue)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@22/LockSupport.java:410)
	at java.util.concurrent.LinkedTransferQueue$DualNode.await(java.base@22/LinkedTransferQueue.java:452)
	at java.util.concurrent.LinkedTransferQueue.xfer(java.base@22/LinkedTransferQueue.java:613)
	at java.util.concurrent.LinkedTransferQueue.poll(java.base@22/LinkedTransferQueue.java:1268)
	at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:455)

"VM Thread" os_prio=0 cpu=6.12ms elapsed=28.76s tid=0x00007625f0136390 nid=225994 runnable  

"GC Thread#0" os_prio=0 cpu=4.31ms elapsed=28.77s tid=0x00007625f00452d0 nid=225988 runnable  

"GC Thread#1" os_prio=0 cpu=6.98ms elapsed=28.54s tid=0x000076255c009310 nid=226017 runnable  

"GC Thread#2" os_prio=0 cpu=6.91ms elapsed=28.54s tid=0x000076255c009e90 nid=226018 runnable  

"GC Thread#3" os_prio=0 cpu=6.85ms elapsed=28.54s tid=0x000076255c00aa10 nid=226019 runnable  

"GC Thread#4" os_prio=0 cpu=4.37ms elapsed=28.54s tid=0x000076255c00b590 nid=226020 runnable  

"GC Thread#5" os_prio=0 cpu=6.85ms elapsed=28.54s tid=0x000076255c00c110 nid=226021 runnable  

"GC Thread#6" os_prio=0 cpu=4.44ms elapsed=28.54s tid=0x000076255c00ccc0 nid=226022 runnable  

"GC Thread#7" os_prio=0 cpu=4.74ms elapsed=28.54s tid=0x000076255c00d870 nid=226023 runnable  

"GC Thread#8" os_prio=0 cpu=2.28ms elapsed=28.54s tid=0x000076255c00e440 nid=226024 runnable  

"GC Thread#9" os_prio=0 cpu=6.85ms elapsed=28.54s tid=0x000076255c00f030 nid=226025 runnable  

"GC Thread#10" os_prio=0 cpu=4.31ms elapsed=28.54s tid=0x000076255c00fc20 nid=226026 runnable  

"GC Thread#11" os_prio=0 cpu=4.82ms elapsed=28.54s tid=0x000076255c010810 nid=226027 runnable  

"G1 Main Marker" os_prio=0 cpu=0.26ms elapsed=28.77s tid=0x00007625f0056230 nid=225989 runnable  

"G1 Conc#0" os_prio=0 cpu=2.64ms elapsed=28.77s tid=0x00007625f0057260 nid=225990 runnable  

"G1 Conc#1" os_prio=0 cpu=1.32ms elapsed=28.26s tid=0x00007625c0000ce0 nid=226052 runnable  

"G1 Conc#2" os_prio=0 cpu=1.22ms elapsed=28.26s tid=0x00007625c00018a0 nid=226053 runnable  

"G1 Refine#0" os_prio=0 cpu=0.08ms elapsed=28.76s tid=0x00007625f0100b10 nid=225991 runnable  

"G1 Service" os_prio=0 cpu=3.41ms elapsed=28.76s tid=0x00007625f0101b60 nid=225992 runnable  

"VM Periodic Task Thread" os_prio=0 cpu=26.17ms elapsed=28.76s tid=0x00007625f011baa0 nid=225993 waiting on condition  

JNI global refs: 91, weak refs: 6

Heap
 garbage-first heap   total reserved 8146944K, committed 49152K, used 25968K [0x000000060ec00000, 0x0000000800000000)
  region size 4096K, 6 young (24576K), 1 survivors (4096K)
 Metaspace       used 31307K, committed 31808K, reserved 1114112K
  class space    used 3323K, committed 3520K, reserved 1048576K

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants