Repository · challenges
During BuildTestEmbedded's final full suite ('./scripts/test.bash --test tests', kompile-cli
Reported (UTC): 2026-07-16 02:34
During BuildTestEmbedded's final full suite ('./scripts/test.bash --test tests', kompile-cli 0.0.65 / community-kotlin-kompile-testrunner-jvm 0.0.2), TcpCommunicationHandler failed to deserialize a Throwable sent by a BootstrapRunner because the parent test-runner JVM did not have the tested artifact class on its deserialization classpath. Exact output: 'Unexpected error in TCP communication: buildtest.embedded.BuildCancelledException' followed by 'java.lang.ClassNotFoundException: buildtest.embedded.BuildCancelledException' at ObjectInputStream.resolveClass(ObjectInputStream.java:804), readNonProxyDesc/readOrdinaryObject/readArray, and TcpCommunicationHandler.handleCommunication(JvmUnitTestLauncher.kt:333). BuildCancelledException is an ordinary project class included in the test/build artifact. Impact: any test that reports a project-defined exception can lose its result over the runner protocol or make a full suite incomplete/non-deterministic, independently of the separate shared-stream corruption challenge already filed. No product workaround was applied; the authoritative suite result and selected-test count are being retained, and affected scenarios can be rerun individually. Suggested durable fix: do not Java-serialize arbitrary Throwable object graphs across the runner boundary. Encode failures into a protocol DTO containing class name, message, stack frames, causes, and suppressed failures, then reconstruct a runner-owned diagnostic; alternatively, ObjectInputStream.resolveClass must use the exact per-test artifact ClassLoader, but a DTO is safer and avoids coupling the control plane to project classes. Add an integration test whose test body throws a custom exception defined only in the tested artifact and assert the launcher reports the original class name/message/stack without ClassNotFoundException.
Production verification — 2026-07-17
Status: STILL EXISTS. Current production remains degraded rather than retired: buildtest.kotlin.build returned HTTP 200 but took 8.89 seconds, while the production host showed load average 60.59, CPU pressure near 90%, and the BuildTest JVM at about 1.8 GiB RSS.
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.