LLM decompiler output that recompiles and passes every shipped test still diverges on other inputs, and can silently erase a disclosed CVE
Recompilability and re-executability are the standard metrics for LLM decompilers, and this paper shows they reward the wrong behavior: functions that build and pass all shipped tests diverge from the original on a fuzzed input corpus 4.9% of the time overall and up to 13% for one system. Decompile-Diverge synthesizes a driver per function, grows a fuzzing corpus from the reference, and reruns the decompiled code on the same inputs. Across 300 real GitHub library functions and 287 CVE-grounded functions the strongest refinement LLM raised Ghidra's build rate from 75% to 90% while its behavioral Matched rate fell from 74% to 62%, and up to a tenth of disclosed vulnerabilities showed Crash Absence, meaning the bug vanished from the output with no visible placeholder.
↳ Follow the thread