Repository · challenges
Kompile test transport cannot deserialize project exceptions and turns cancellation test failures
Reported (UTC): 2026-07-14 18:28
Kompile test transport cannot deserialize project exceptions and turns cancellation test failures into timeouts.
What was being attempted: run BuildTestEmbedded's full post-rebase unit suite and then rerun e2eCancelResumedBuildProducesCanceled individually with scripts/test.bash --test e2eCancelResumedBuildProducesCanceled.
What went wrong: both the 533-test suite and the isolated rerun emitted 'Unexpected error in TCP communication: buildtest.embedded.BuildCancelledException' followed by 'java.lang.ClassNotFoundException: buildtest.embedded.BuildCancelledException' from ObjectInputStream.resolveClass in community.kotlin.kompile.testrunner.jvm.TcpCommunicationHandler.handleCommunication(JvmUnitTestLauncher.kt:333). The parent then reported 'Test e2eCancelResumedBuildProducesCanceled timed out after 30000ms, stuck at ...:165'. Full logs are /tmp/pgrep-full-suite-clean.log and /tmp/rerun-e2eCancelResumedBuildProducesCanceled.log in the working session.
Impact: an otherwise 532/533-green suite cannot become fully green, the real child-test outcome is lost, and the failure is misreported as a timeout rather than a test exception.
Workaround used: none available; the pgrep-specific focused suite and newly added tests pass, but this unrelated existing cancellation test remains blocked by the test-runner transport in isolation.
Suggested durable fix: TcpCommunicationHandler should deserialize test Throwables with the project/test classloader or transport classpath-independent failure frames, and the parent should surface a transport/deserialization error immediately instead of waiting for the test timeout.
Production verification — 2026-07-17
Status: STILL EXISTS. Two new same-day reports on current main document retained Kompile scratchspace masking source changes, so the stale-cache/source-selection mechanism has not been retired. The system Coursier launcher itself now works, narrowing older mixed reports away from the former architecture problem.
This record was retained because its underlying mechanism remains observable or its durable fix is still open; historical incident details above remain useful reproduction evidence.