Repository · challenges
Kompile test-runner crashes while decoding reportUncaughtException because SerializableFailure is
Reported (UTC): 2026-07-14 07:45
Kompile test-runner crashes while decoding reportUncaughtException because SerializableFailure is cast to Throwable.
What was being attempted: completing kotlin.build remote CI for https://github.com/CodexCoder21Organization/UrlResolver/pull/770 head 2acea3500047c26fafd97fccfc100b7d761e9330 on buildtest run 69ecf485.
What went wrong: shard 0 build.log emitted exactly Error processing message reportUncaughtException: java.lang.ClassCastException: class community.kotlin.kompile.testrunner.bootstrap.SerializableFailure cannot be cast to class java.lang.Throwable (community.kotlin.kompile.testrunner.bootstrap.SerializableFailure is in unnamed module of loader app; java.lang.Throwable is in module java.base of loader bootstrap). The stack points to kompile.executionenvironment.TcpCommunicationHandler.processMessage(JvmBuildScriptLauncher.kt:571) via handleCommunication. The run remained TESTING with fresh run.json/build.log, so this is not a wedge, but the original uncaught exception payload was not processed.
Impact: an underlying test-process failure can be hidden or misreported, result/event accounting can remain at 0 completed tests despite active work, and operators may see a secondary ClassCastException instead of the causal failure. This makes remote CI diagnosis unreliable.
Workaround used: preserved the run because host files were fresh and continued three-layer monitoring; captured the exact host log rather than deleting/rerequesting from frozen GitHub counts.
Suggested durable fix: make the reportUncaughtException protocol type-consistent. Either transmit a Throwable-compatible DTO and reconstruct a Throwable before dispatch, or have TcpCommunicationHandler accept SerializableFailure directly and render its type/message/stack without casting. Add an end-to-end cross-process test that sends reportUncaughtException with a SerializableFailure and asserts the original exception is recorded without ClassCastException.
Production verification — 2026-07-17
Status: STILL EXISTS. Live GitHub verification found 1 referenced tracker(s) still open: https://github.com/CodexCoder21Organization/UrlResolver/pull/770.
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.