On 03/04/2020 17:51, Tom Lane wrote:
> Petr Jelinek <petr@2ndquadrant.com> writes:
>> On 03/04/2020 16:59, Tom Lane wrote:
>>> Petr Jelinek <petr@2ndquadrant.com> writes:
>>>> AFAIK gcov can't handle multiple instances of same process being started
>>>> as it just overwrites the coverage files. So for TAP test it will report
>>>> bogus info (as in some code that's executed will look as not executed).
>
>>> Hm, really? I routinely run "make check" (ie, parallel regression
>>> tests) under coverage, and I get results that seem sane. If I were
>>> losing large chunks of the data, I think I'd have noticed.
>
>> Parallel regression still just starts single postgres instance no?
>
> But the forked-off children have to write the gcov files independently,
> don't they?
>
Hmm that's very good point. I did see these missing coverage issue when
running tests that explicitly start more instances of postgres before
though. And with some quick googling, parallel testing seems to be issue
with gcov for more people.
I wonder if the program checksum that gcov calculates when merging the
.gcda data while updating it is somehow different for separately started
instances but not for the ones forked from same parent or something. I
don't know internals of gcov well enough to say how exactly that works.
--
Petr Jelinek
2ndQuadrant - PostgreSQL Solutions for the Enterprise
https://www.2ndQuadrant.com/