Repository · challenges
Kompile full-suite runner corrupts its TCP result stream while still reporting all tests passed.
Reported (UTC): 2026-07-15 02:34
Kompile full-suite runner corrupts its TCP result stream while still reporting all tests passed.
What was being attempted: run the complete BuildTestEmbedded local suite with scripts/test.bash --test . --log /tmp/full-suite.xml before opening a PR.
What went wrong: two independent green full-suite runs printed 'Unexpected error in TCP communication: invalid type code: 73' (and once invalid type code: 00) from TcpCommunicationHandler.handleCommunication, followed by ClassNotFoundException for buildtest.embedded.BuildCancelledException while deserializing the result stream. The command nevertheless exited 0 and reported 'ALL TESTS PASSED (531/531 selected tests completed successfully)'. Focused runs of the two changed tests did not emit these warnings, so they appear tied to concurrent full-suite result transport rather than the changed tests.
Impact: the runner presents channel-corruption stack traces beside a green exit, making it ambiguous whether results were lost and forcing manual XML count verification; it also obscured diagnosis of a genuine prior 180-second timeout in the same suite.
Workaround used: verify the process exit code, generated XML test count, zero success=false rows, and repeat the full suite after the targeted test was fixed.
Suggested durable fix: make community-kotlin-kompile-testrunner-jvm serialize writes to its ObjectOutputStream (or give each test connection an independent stream), transport exceptions as classpath-independent frames, and fail the overall run if result-stream deserialization is corrupted instead of printing a warning and returning green.
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.