Open durban opened 1 year ago
Well that absolutely looks like a bug…
Yeah, something is definitely wrong here; possibly more than one thing.
What I'm (almost) sure is wrong is PureFiber#cancel
:
https://github.com/typelevel/cats-effect/blob/series/3.x/kernel-testkit/shared/src/main/scala/cats/effect/kernel/testkit/pure.scala#L391. It just writes Outcome.Canceled()
into an mvar. So if the fiber will not be scheduled any more (e.g., because it went into a never
), who will run the finalizers?
There is also something strange going on with pushing/popping the finalizers, but I'm not sure what (if anything).
I might be missing something completely obvious, but
PureConc
doesn't seem to run finalizers:If I put this in
PureConcSpec
, it fails with: