Hi,
On 2026-10-03 19:07:02 -0400, Andres Freund wrote:
> On October 3, 2026 5:03:27 PM EDT, Andres Freund <andres@anarazel.de> wrote:
> >I think there are definitely some bugs in lcov around multi-line statements
> >that contain branches. That's where it seems to very often get confused and
> >claims the data is inconsistent, but afaict it's due to it misunderstanding
> >the data that gcov spits out. I'll try to make a bug report out of that.
>
> Oh, huh. At least one of the two bugs is actually a behavioral difference between gcc versions, not lcov versions.
Thegcov data starting with gcc 15 reports
>
> var =
> cond ? a : b;
>
> i.e. a variable assignment with a conditional in a new line, different than before. And the new output actually
triggerserrors in lcov back to at least lcov 2.0. It's actually an error in geninfo.
>
> I found another small repro for multi line conditionals where some branches are never reached triggering errors in
lcovitself, and that one is not gcc version dependent...
>
> Will report bugs later today or tomorrow, food is more important now.
Bug triggering at least with lcov >= 2.0:
https://github.com/linux-test-project/lcov/issues/554
At first I though this was only reachable with gcc 15, but with some LLM help
I found a version that triggered down to gcc 12.
Bug triggering with lcov >= 2.2:
https://github.com/linux-test-project/lcov/issues/555
this seems independent of the gcc version.
It's kinda interesting that both only trigger for multi-line statements.
Which may be related to why we're seeing them more - we use more multi-line
statements than we used to.
Greetings,
Andres Freund