public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Laszlo Ersek" <lersek@redhat.com>
To: devel@edk2.groups.io, osteffen@redhat.com
Subject: Re: [edk2-devel] CI: GCC13 and lcov problem
Date: Thu, 29 Feb 2024 09:26:57 +0100	[thread overview]
Message-ID: <3b39a420-2fb5-0336-6494-f0d2a857e04b@redhat.com> (raw)
In-Reply-To: <CA+bRGFoiBWZV6BqUNnPe0g1OCT5mCb6Ze6Cz5i2q7E+0m2=Q8A@mail.gmail.com>

On 2/28/24 14:59, Oliver Steffen wrote:
> Hi,
> 
> I am working on switching the Linux CI jobs over to the Fedora 39 image
> which comes with gcc 13.
> 
> Unfortunately, some jobs fail due to some error related to lcov /
> geninfo, see below.
> 
> Does anybody know from the top of the head what this is about / what to do?
> PR: https://github.com/tianocore/edk2/pull/5412
> 
> Job log:
> 
> INFO - Cmd to run is: lcov --capture --directory
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/ --output-file
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/coverage-test.info --rc
> lcov_branch_coverage=1
> INFO - ------------------------------------------------
> INFO - --------------Cmd Output Starting---------------
> INFO - ------------------------------------------------
> INFO - Capturing coverage data from
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/
> INFO - geninfo cmd: '/usr/bin/geninfo
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/ --output-filename
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/coverage-test.info --rc
> lcov_branch_coverage=1 --memory 0 --branch-coverage'
> INFO - geninfo: WARNING: RC option 'lcov_branch_coverage' is
> deprecated.  Consider using 'branch_coverage. instead.
> (Backward-compatible support will be removed in the future
> INFO - Found gcov version: 13.2.1
> INFO - Using intermediate gcov format
> INFO - Writing temporary data to /tmp/geninfo_datXdcz
> INFO - Scanning /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/ for
> .gcda files ...
> INFO - Found 99 data files in /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/UnitTestDebugAssertLib/UnitTestDebugAssertLibHost/OUTPUT/UnitTestDebugAssertLibHost.gcda
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/UnitTestPersistenceLibNull/UnitTestPersistenceLibNull/OUTPUT/UnitTestPersistenceLibNull.gcda
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/Posix/DebugLibPosix/DebugLibPosix/OUTPUT/DebugLibPosix.gcda
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/Posix/MemoryAllocationLibPosix/MemoryAllocationLibPosix/OUTPUT/MemoryAllocationLibPosix.gcda
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/UnitTestResultReportLib/UnitTestResultReportLibDebugLib/OUTPUT/UnitTestResultReportLib.gcda
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/UnitTestResultReportLib/UnitTestResultReportLibDebugLib/OUTPUT/UnitTestResultReportLibDebugLib.gcda
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/CmockaLib/CmockaLib/OUTPUT/cmocka/src/cmocka.gcda
> INFO - geninfo: WARNING:
> /__w/1/s/UnitTestFrameworkPkg/Library/CmockaLib/cmocka/src/cmocka.c:725:
> unexecuted block on non-branch line with non-zero hit count.  Use
> "geninfo --rc geninfo_unexecuted_blocks=1 to set count to zero.
> INFO - Processing
> /__w/1/s/Build/SecurityPkg/HostTest/NOOPT_GCC5/X64/UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib/OUTPUT/googletest/googlemock/src/gmock-all.gcda
> INFO - geninfo: ERROR: "/usr/include/c++/13/bits/stl_tree.h":2129:
> mismatched exception tag for id 1, 1: '1' -> '0'
> INFO - 	(use "geninfo --ignore-errors mismatch ..." to bypass this error)
> INFO - ------------------------------------------------
> INFO - --------------Cmd Output Finished---------------
> INFO - --------- Running Time (mm:ss): 00:00 ----------
> INFO - ----------- Return Code: 0x00000001 ------------
> INFO - ------------------------------------------------
> ERROR - UnitTest Coverage: Failed to build coverage data for tested files.
> ERROR - Plugin Failed: Host-Based Unit Test Runner returned 1
> CRITICAL - Post Build failed
> PROGRESS - End time: 2024-02-26 16:18:23.207202	 Total time Elapsed: 0:00:32
> ERROR - --->Test Failed: Host Unit Test Compiler Plugin NOOPT returned 1

Seems like lcov / geninfo cannot convert the collected gcov coverage
data file to a "trace file". The geninfo manual says,

--ignore-errors errors

    Specify a list of errors after which to continue processing.

    Use this option to specify a list of one or more classes of errors
    after which geninfo should continue processing instead of aborting.
    Note that the tool will generate a warning (rather than a fatal
    error) unless you ignore the error two (or more) times:

    geninfo ... --ignore-errors unused,unused

    errors can be a comma-separated list of the following keywords:

    [...]

    mismatch: Inconsistent entries found in trace file:

        branch expression (3rd field in the .info file 'BRDA' entry) of
        merge data does not match, or

        function execution count (FNDA:...) but no function declaration
        (FN:...).

I think there may be something in the C++ STL (stl_tree.h), related to
potential exception escape paths
<https://stackoverflow.com/questions/42003783/lcov-gcov-branch-coverage-with-c-producing-branches-all-over-the-place>,
that tickles a bug in geninfo.

I'd report a bug for upstream lcov
<https://github.com/linux-test-project/lcov/issues> and for the time
being, put "geninfo --ignore-errors mismatch" in our CI scripts.

Browsing some older bug reports there, it seems that lcov may be right,
and it's indeed gcov that produces inconsistent data files:
<https://github.com/linux-test-project/lcov/issues/238>.

Ah, the exact same problem has been reported earlier:

  https://github.com/linux-test-project/lcov/issues/209

The lcov maintainer provides a great description in the ticket. It's a
toolchain problem that lcov only catches.

Laszlo



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116138): https://edk2.groups.io/g/devel/message/116138
Mute This Topic: https://groups.io/mt/104623079/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



      reply	other threads:[~2024-02-29  8:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-28 13:59 [edk2-devel] CI: GCC13 and lcov problem Oliver Steffen
2024-02-29  8:26 ` Laszlo Ersek [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3b39a420-2fb5-0336-6494-f0d2a857e04b@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox