Moving to its own thread... beta 2 seems to deplet...
# ktor
m
Moving to its own thread... beta 2 seems to deplete entropy very quickly, causing pretty severe blocking. Stack traces forthcoming...
nonce generation job:
Copy code
"DefaultDispatcher-worker-2" #16 daemon prio=5 os_prio=0 tid=0x00007f7561681800 nid=0x177c runnable  [0x00007f747b3fe000]
   java.lang.Thread.State: RUNNABLE
	at java.io.FileInputStream.readBytes(java.base@10.0.2/Native Method)
	at java.io.FileInputStream.read(java.base@10.0.2/FileInputStream.java:280)
	at java.io.FilterInputStream.read(java.base@10.0.2/FilterInputStream.java:133)
	at sun.security.provider.NativePRNG$RandomIO.readFully(java.base@10.0.2/NativePRNG.java:424)
	at sun.security.provider.NativePRNG$RandomIO.implGenerateSeed(java.base@10.0.2/NativePRNG.java:441)
	- locked <0x000000040f5500c0> (a java.lang.Object)
	at sun.security.provider.NativePRNG$RandomIO.access$500(java.base@10.0.2/NativePRNG.java:331)
	at sun.security.provider.NativePRNG$Blocking.engineGenerateSeed(java.base@10.0.2/NativePRNG.java:274)
	at java.security.SecureRandom.generateSeed(java.base@10.0.2/SecureRandom.java:847)
	at io.ktor.util.NonceKt$nonceGeneratorJob$1.invokeSuspend(Nonce.kt:33)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
	at kotlinx.coroutines.DispatchedTask$DefaultImpls.run(Dispatched.kt:221)
	at kotlinx.coroutines.DispatchedContinuation.run(Dispatched.kt:67)
	at kotlinx.coroutines.scheduling.Task.run(Tasks.kt:94)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:732)
A request handler trying to set a cookie waiting on a nonce:
Copy code
"DefaultDispatcher-worker-3" #17 daemon prio=5 os_prio=0 tid=0x00007f7474001000 nid=0x177d waiting on condition  [0x00007f747b2fc000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@10.0.2/Native Method)
	- parking to wait for  <0x000000040e42de48> (a kotlinx.coroutines.BlockingCoroutine)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@10.0.2/LockSupport.java:234)
	at kotlinx.coroutines.DefaultTimeSource.parkNanos(TimeSource.kt:31)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:72)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:45)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:35)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at io.ktor.util.CryptoKt.generateNonceBlocking(Crypto.kt:72)
	at io.ktor.util.CryptoKt.generateNonce(Crypto.kt:67)
	at io.ktor.sessions.CookieIdSessionBuilder$sessionIdProvider$1.invoke(SessionsBuilder.kt:172)
	at io.ktor.sessions.CookieIdSessionBuilder$sessionIdProvider$1.invoke(SessionsBuilder.kt:160)
	at io.ktor.util.AttributesJvm.computeIfAbsent(AttributesJvm.kt:31)
	at io.ktor.sessions.SessionTrackerById.store(SessionTrackerById.kt:41)
	at io.ktor.sessions.Sessions$Feature$install$2.invokeSuspend(Sessions.kt:67)
	at io.ktor.sessions.Sessions$Feature$install$2.invoke(Sessions.kt)
	at io.ktor.util.pipeline.PipelineContext.proceed(PipelineContext.kt:53)
	at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:24)
	... app logic that uses cookies
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
	at kotlinx.coroutines.DispatchedTask$DefaultImpls.run(Dispatched.kt:221)
	at kotlinx.coroutines.AbstractContinuation.run(AbstractContinuation.kt:19)
	at kotlinx.coroutines.scheduling.Task.run(Tasks.kt:94)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:732)