Test Timeout Failures #6238
Replies: 5 comments 8 replies
|
The deadlock chain: attachBaseContext()
→ ensurePlatformParametersAreLoaded()
→ runBlocking { loadParametersAsync().await() } // blocks SDK main thread
→ TestPlatformParameterModule.loadParametersAsync()
→ CoroutineScope(Dispatchers.Unconfined).async {
prodController.loadParametersAsync()
testCoroutineDispatchers.runCurrent() // ← tries to flush test dispatchers
} // from inside runBlocking on main thread
// = deadlock |
|
The test isn't failing to build, it's timing out during execution. The SIGTERM is Bazel killing the test process after it exceeded its time limit. On CI the test hits the Bazel wall-clock timeout first (SIGTERM), masking the error. On the M4 Mac the machine is fast enough that the test actually completes the 10s internal timeout and surfaces the real On CITIMEOUT: //app:src/sharedTest/java/org/oppia/android/app/profile/CreateAdminPinActivityTest (Summary)
/home/runner/.cache/bazel/_bazel_runner/ef69b31fa14ea8341d6589b0a8832bdd/execroot/__main__/bazel-out/k8-fastbuild/testlogs/app/src/sharedTest/java/org/oppia/android/app/profile/CreateAdminPinActivityTest/test.log
INFO: From Testing //app:src/sharedTest/java/org/oppia/android/app/profile/CreateAdminPinActivityTest:
==================== Test output for //app:src/sharedTest/java/org/oppia/android/app/profile/CreateAdminPinActivityTest:
JUnit4 Test Runner
.resources.arsc in APK '/home/runner/.cache/bazel/_bazel_runner/ef69b31fa14ea8341d6589b0a8832bdd/sandbox/processwrapper-sandbox/4028/execroot/__main__/bazel-out/k8-fastbuild/bin/app/src/sharedTest/java/org/oppia/android/app/profile/CreateAdminPinActivityTest.runfiles/__main__/../robolectric/bazel/../../org_robolectric_android_all_instrumented_11_robolectric_6757853_i2/android-all-instrumented-11-robolectric-6757853-i2.jar' is compressed.
-- Test timed out at 2026-04-01 14:10:49 UTC --
Received SIGTERM; writing test XML
Done writing test XML
Dumping stack traces for all threads
Starting full thread dump ...
"main" Id=1 WAITING on java.util.concurrent.FutureTask@3cc04389
at java.base@11.0.15/jdk.internal.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.FutureTask@3cc04389
at java.base@11.0.15/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
at java.base@11.0.15/java.util.concurrent.FutureTask.awaitDone(FutureTask.java:447)
at java.base@11.0.15/java.util.concurrent.FutureTask.get(FutureTask.java:190)
at app//org.robolectric.internal.bytecode.Sandbox.runOnMainThread(Sandbox.java:96)
at app//org.robolectric.internal.bytecode.Sandbox.runOnMainThread(Sandbox.java:86)
at app//org.robolectric.internal.SandboxTestRunner$2.evaluate(SandboxTestRunner.java:243)
at app//org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at app//org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at app//org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at app//org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at app//org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at app//org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at app//org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at app//org.robolectric.internal.SandboxTestRunner$1.evaluate(SandboxTestRunner.java:93)
at app//org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at app//androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:154)
at app//com.google.testing.junit.runner.internal.junit4.CancellableRequestFactory$CancellableRunner.run(CancellableRequestFactory.java:108)
at app//org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at app//org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at app//com.google.testing.junit.runner.junit4.JUnit4Runner.run(JUnit4Runner.java:116)
at app//com.google.testing.junit.runner.BazelTestRunner.runTestsInSuite(BazelTestRunner.java:145)
at app//com.google.testing.junit.runner.BazelTestRunner.main(BazelTestRunner.java:76)
"SDK 30 Main Thread @coroutine#24" Id=11 RUNNABLE
at java.base@11.0.15/java.lang.Thread.setNativeName(Native Method)
at java.base@11.0.15/java.lang.Thread.setName(Thread.java:1177)
- locked java.lang.Thread@6d1b05bb
at kotlinx.coroutines.CoroutineId.restoreThreadContext(CoroutineContext.kt:271)
at kotlinx.coroutines.CoroutineId.restoreThreadContext(CoroutineContext.kt:247)
at kotlinx.coroutines.internal.ThreadContextKt.restoreThreadContext(ThreadContext.kt:94)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:238)
at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(AndroidUiDispatcher.android.kt:81)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.run(AndroidUiDispatcher.android.kt:57)
at android.os.Handler.$$robo$$android_os_Handler$handleCallback(Handler.java:938)
at java.base@11.0.15/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder)
at java.base@11.0.15/java.lang.invoke.LambdaForm$MH/0x00000008001ea840.guardWithCatch(LambdaForm$MH)
at java.base@11.0.15/java.lang.invoke.DelegatingMethodHandle$Holder.delegate(DelegatingMethodHandle$Holder)
at java.base@11.0.15/java.lang.invoke.LambdaForm$MH/0x00000008001eb840.guard(LambdaForm$MH)
at java.base@11.0.15/java.lang.invoke.LambdaForm$MH/0x00000008001ebc40.linkToCallSite(LambdaForm$MH)
at android.os.Handler.handleCallback(Handler.java)
at android.os.Handler.$$robo$$android_os_Handler$dispatchMessage(Handler.java:99)
at java.base@11.0.15/java.lang.invoke.DirectMethodHandle$Holder.invokeSpecial(DirectMethodHandle$Holder)
at java.base@11.0.15/java.lang.invoke.LambdaForm$MH/0x00000008001f2c40.guardWithCatch(LambdaForm$MH)
at java.base@11.0.15/java.lang.invoke.DelegatingMethodHandle$Holder.delegate(DelegatingMethodHandle$Holder)
at java.base@11.0.15/java.lang.invoke.LambdaForm$MH/0x00000008001f4840.guard(LambdaForm$MH)
at java.base@11.0.15/java.lang.invoke.LambdaForm$MH/0x00000008001f4c40.linkToCallSite(LambdaForm$MH)
at android.os.Handler.dispatchMessage(Handler.java)
at org.robolectric.shadows.ShadowPausedLooper$IdlingRunnable.run(ShadowPausedLooper.java:332)
at org.robolectric.shadows.ShadowPausedLooper.executeOnLooper(ShadowPausedLooper.java:366)
at org.robolectric.shadows.ShadowPausedLooper.idle(ShadowPausedLooper.java:92)
at org.robolectric.shadows.ShadowPausedLooper.idleIfPaused(ShadowPausedLooper.java:163)
at org.robolectric.android.controller.ActivityController.visible(ActivityController.java:177)
at org.robolectric.android.internal.RoboMonitoringInstrumentation.startActivitySyncInternal(RoboMonitoringInstrumentation.java:110)
at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:33)
at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:38)
at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:272)
at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:229)
at org.oppia.android.app.profile.CreateAdminPinActivityTest.testActivity_hasCorrectActivityLabel(CreateAdminPinActivityTest.kt:133)
at java.base@11.0.15/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base@11.0.15/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base@11.0.15/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base@11.0.15/java.lang.reflect.Method.invoke(Method.java:566)
at app//org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at app//org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at app//org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at app//org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at app//org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.oppia.android.testing.OppiaTestRule$apply$1.evaluate(OppiaTestRule.kt:45)
at org.oppia.android.testing.junit.InitializeDefaultLocaleRule$apply$1.evaluate(InitializeDefaultLocaleRule.kt:49)
at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at app//org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:591)
at app//org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:274)
at app//org.robolectric.internal.SandboxTestRunner$2$$Lambda$81/0x00000008001c9040.run(Unknown Source)
at app//org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:88)
at app//org.robolectric.internal.bytecode.Sandbox$$Lambda$82/0x00000008001c9440.call(Unknown Source)
at java.base@11.0.15/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base@11.0.15/java.lang.Thread.run(Thread.java:829)
Number of locked synchronizers = 1
- java.util.concurrent.ThreadPoolExecutor$Worker@119cbf96
"pool-3-thread-1" Id=14 WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@5f3433e5
at java.base@11.0.15/jdk.internal.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@5f3433e5
at java.base@11.0.15/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
at java.base@11.0.15/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
at java.base@11.0.15/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base@11.0.15/java.lang.Thread.run(Thread.java:829)
"pool-1-thread-1" Id=16 WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@60da651
at java.base@11.0.15/jdk.internal.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@60da651
at java.base@11.0.15/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
at java.base@11.0.15/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
at java.base@11.0.15/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base@11.0.15/java.lang.Thread.run(Thread.java:829)
"pool-4-thread-1" Id=17 WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@330e4df6
at java.base@11.0.15/jdk.internal.misc.Unsafe.park(Native Method)
- waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@330e4df6
at java.base@11.0.15/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
at java.base@11.0.15/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
at java.base@11.0.15/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
at java.base@11.0.15/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base@11.0.15/java.lang.Thread.run(Thread.java:829)On M4 MacThere was 1 failure:
1) testActivity_hasCorrectActivityLabel(org.oppia.android.app.profile.CreateAdminPinActivityTest)
java.lang.IllegalStateException: Dispatcher failed to finish flush queue in 10000ms
at org.oppia.android.testing.threading.TestCoroutineDispatcherRobolectricImpl$flushTaskQueueBlocking$1.invokeSuspend(TestCoroutineDispatcherRobolectricImpl.kt:134)
(Coroutine boundary)
at org.oppia.android.app.activity.InjectableAppCompatActivity$ensurePlatformParametersAreLoaded$1.invokeSuspend(InjectableAppCompatActivity.kt:65)
Caused by: java.lang.IllegalStateException: Dispatcher failed to finish flush queue in 10000ms
at org.oppia.android.testing.threading.TestCoroutineDispatcherRobolectricImpl$flushTaskQueueBlocking$1.invokeSuspend(TestCoroutineDispatcherRobolectricImpl.kt:134)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.oppia.android.testing.threading.TestCoroutineDispatcherRobolectricImpl.flushTaskQueueBlocking(TestCoroutineDispatcherRobolectricImpl.kt:128)
at org.oppia.android.testing.threading.TestCoroutineDispatcherRobolectricImpl.runCurrent(TestCoroutineDispatcherRobolectricImpl.kt:97)
at org.oppia.android.testing.threading.TestCoroutineDispatcher.runCurrent$default(TestCoroutineDispatcher.kt:87)
at org.oppia.android.testing.threading.TestCoroutineDispatchersRobolectricImpl.flushNextTasks(TestCoroutineDispatchersRobolectricImpl.kt:91)
at org.oppia.android.testing.threading.TestCoroutineDispatchersRobolectricImpl.runCurrent(TestCoroutineDispatchersRobolectricImpl.kt:35)
at org.oppia.android.testing.platformparameter.TestPlatformParameterModule$providePlatformParameterController$1$loadParametersAsync$1.invokeSuspend(TestPlatformParameterModule.kt:66)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.async(Builders.common.kt:91)
at kotlinx.coroutines.BuildersKt.async(Unknown Source)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.async$default(Builders.common.kt:82)
at kotlinx.coroutines.BuildersKt.async$default(Unknown Source)
at org.oppia.android.testing.platformparameter.TestPlatformParameterModule$providePlatformParameterController$1.loadParametersAsync(TestPlatformParameterModule.kt:63)
at org.oppia.android.app.activity.InjectableAppCompatActivity$ensurePlatformParametersAreLoaded$1.invokeSuspend(InjectableAppCompatActivity.kt:65)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.oppia.android.app.activity.InjectableAppCompatActivity.ensurePlatformParametersAreLoaded(InjectableAppCompatActivity.kt:65)
at org.oppia.android.app.activity.InjectableAppCompatActivity.attachBaseContext(InjectableAppCompatActivity.kt:35)
at android.app.Activity.$$robo$$android_app_Activity$attach(Activity.java:7894)
at android.app.Activity.attach(Activity.java)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.robolectric.shadows._Activity_$$Reflector13.attach(Unknown Source)
at org.robolectric.shadows._Activity_.callAttach(_Activity_.java:268)
at org.robolectric.shadows.ShadowActivity.callAttach(ShadowActivity.java:169)
at org.robolectric.android.controller.ActivityController.attach(ActivityController.java:95)
at org.robolectric.android.controller.ActivityController.of(ActivityController.java:57)
at org.robolectric.Robolectric.buildActivity(Robolectric.java:107)
at org.robolectric.android.internal.RoboMonitoringInstrumentation.startActivitySyncInternal(RoboMonitoringInstrumentation.java:103)
at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:33)
at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:38)
at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:272)
at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:229)
at org.oppia.android.app.profile.CreateAdminPinActivityTest.testActivity_hasCorrectActivityLabel(CreateAdminPinActivityTest.kt:133)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.oppia.android.testing.OppiaTestRule$apply$1.evaluate(OppiaTestRule.kt:45)
at org.oppia.android.testing.junit.InitializeDefaultLocaleRule$apply$1.evaluate(InitializeDefaultLocaleRule.kt:49)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:591)
at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:274)
at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:88)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 10000 ms
(Coroutine boundary)
at org.oppia.android.testing.threading.TestCoroutineDispatcherRobolectricImpl$flushTaskQueueBlocking$1$1.invokeSuspend(TestCoroutineDispatcherRobolectricImpl.kt:131)
at org.oppia.android.testing.threading.TestCoroutineDispatcherRobolectricImpl$flushTaskQueueBlocking$1.invokeSuspend(TestCoroutineDispatcherRobolectricImpl.kt:130)
Caused by: kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 10000 ms
at kotlinx.coroutines.TimeoutKt.TimeoutCancellationException(Timeout.kt:184)
at kotlinx.coroutines.TimeoutCoroutine.run(Timeout.kt:154)
at kotlinx.coroutines.EventLoopImplBase$DelayedRunnableTask.run(EventLoop.common.kt:508)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:108)
at java.base/java.lang.Thread.run(Thread.java:829)
FAILURES!!!
Tests run: 2, Failures: 1 |
|
Claude suggests that override fun loadParametersAsync(): Deferred<Unit> {
// Parameters are guaranteed loaded during graph construction in
// providePlatformParameterProcessState. Nothing async needed here.
return CompletableDeferred(Unit)
}This is supposed to work because Dagger guarantees I did try modifying the |
|
It could be that other test suites have the potential to hit this deadlock, maybe they just haven't because they are not UI heavy. More likely though, is a race condition in Introduced |
|
So given that eliminating the choreographer is the ultimate cause still doesn't fix the issue for you @adhiamboperes then we have to think about what can cause the actual deadlock. Per the specific initialization code, that deadlock can technically only trigger in two situations:
I was originally going to say this:
However, it's wrong. Even on Linux the main thread is not idle at the time |
Uh oh!
There was an error while loading. Please reload this page.
I have a test failing with the following error:
It is a standard activity label test
This is just a debug dump discussion.
All reactions