Remove `tcp_protocol_fuzzer`, it has never fuzzed anything
The target has never accumulated a single corpus unit: `fuzzer/corpus/tcp_protocol_fuzzer.zip` in the artifact bucket is a 22-byte empty archive, and the nightly job logs report `tcp_protocol_fuzzer corpus having 0 units` on every one of the last 60 runs. A coverage-guided fuzzer that never saves an input is not exploring anything, and corpus minimization is permanently skipped for it with `persistent corpus is empty`. It has never produced an actionable report either. All 212 recorded failures (2025-11-04 to 2026-03-17) carry the same message, `No stack traces found - this is unusual - check output files`: the process exited non-zero without a sanitizer report, which is the `exit(-1)` in `LLVMFuzzerInitialize` taken when the embedded server thread finishes before the server reaches `isServerCompletelyStarted`. Since 2026-03-17 it reports `OK` on every run, which in this harness only means the process was still alive when the runner killed it at the timeout - so it now burns an hour of the nightly budget silently. With an empty corpus, the two remaining explanations are that startup never completes and the initialization loop spins, or that the server thread is dead and `LLVMFuzzerTestOneInput` rejects every input with `return -1`; the fuzzer output is not uploaded on success, so this cannot be narrowed down further from CI. The harness is not repairable in its current shape. It embeds a whole `clickhouse-server` in the fuzzer process and hands each input to a TCP socket, so the server handles the input on its own threads while `LLVMFuzzerTestOneInput` polls the socket. The coverage libFuzzer attributes to an input is then whatever the process happened to execute concurrently, including every background thread, which makes coverage feedback, corpus minimization and crash reproduction all unsound. Fixing that means rewriting it as an out-of-process protocol fuzzer, which is a different target. The native protocol surface is already covered by the stateless and integration suites, and query text specifically by `clickhouse_fuzzer`. Removing this also stops compiling `Server.cpp` and `MetricsTransmitter.cpp` a second time into a ~5 GB ASan binary in every fuzzers build. Note for whoever merges this: `fuzzer/corpus/tcp_protocol_fuzzer.zip` is left behind in the artifact bucket and can be deleted; it is empty anyway.
A
Alexey Milovidov committed
8b7a8f2282d1bb14f9cbc540bbfe464939e5a246
Parent: 2ae8a25