Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-25914

gcda data files are not created when invoking the test for GCOV builds

Details

    Description

      1. When compiled `ENABLE_GCOV` note files are created .gcno.
      Those files are used to create data files .gcda.
      2. gcda files are obtained when the binary is executed.
      In case of mtr (tested for 10.2) ./mtr 1st will create .gcda files across the server repo.
      3. gcda files are scanned with dgcov.pl script to generate analysis (look the var/last_changes file.
      All above works with 10.2!

      With 10.6 gcda files are not created in step 2. <-Problem !

      Looking link seems that gcda files are created after the process finishes.
      I have debuged in 10.2 mtr 1st to see the creation of gcda files and I can confirm that on line 1096:

          if ($line eq 'TESTCASE'){
        ->    my $test= My::Test::read_test($server);
      

      following is created (somewhere until that line):

      anel@anel:~/mariadb/10.2-worktree-in-source$ find .|grep gcda
      ./libmariadb/mariadb_config/CMakeFiles/mariadb_config.dir/mariadb_config.c.gcda
      

      while in 10.6 on the same place no gcda is generated.
      Can it have something to do with changes (if any) of handling sigterm as stated in above link too?
      wlad some hints please ?

      Hmm running manually specific binary mariadb_config
      10.2 - created gcda file:

      anel@anel:~/mariadb/10.2-worktree-in-source/libmariadb/mariadb_config$ ./mariadb_config --tlsinfo
      GnuTLS 3.5.18
      anel@anel:~/mariadb/10.2-worktree-in-source/libmariadb/mariadb_config$ cd ..
      anel@anel:~/mariadb/10.2-worktree-in-source/libmariadb$ cd ..
      anel@anel:~/mariadb/10.2-worktree-in-source$ find .|grep gcda
      ./libmariadb/mariadb_config/CMakeFiles/mariadb_config.dir/mariadb_config.c.gcda
      

      10.6 - not created gcda file:

      anel@anel:~/mariadb/10.6/libmariadb/mariadb_config$ ./mariadb_config --tlsinfo
      GnuTLS 3.5.18
      anel@anel:~/mariadb/10.6/libmariadb/mariadb_config$ cd ..
      anel@anel:~/mariadb/10.6/libmariadb$ cd ..
      anel@anel:~/mariadb/10.6$ find .|grep gcda
      anel@anel:~/mariadb/10.6$ 
      

      Means problem is somewhere in the server ?

      Attachments

        Issue Links

          Activity

            The last patch 3b8d4180d5f7 introduced doesn't have any influence. By reverting it still gcda files are not created.

            anel Anel Husakovic added a comment - The last patch 3b8d4180d5f7 introduced doesn't have any influence. By reverting it still gcda files are not created.

            Tested on 10.2-10.6 only in 10.6 this problem exists.

            anel Anel Husakovic added a comment - Tested on 10.2-10.6 only in 10.6 this problem exists.
            anel Anel Husakovic added a comment - - edited

            Seems like with this command gcda files are not created:

            $ cmake . -DCMAKE_BUILD_TYPE=Debug -DCONC_WITH_{UNITTEST,SSL}=OFF -DWITH_EMBEDDED_SERVER=OFF -DWITH_UNIT_TESTS=OFF -DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,CONNECT,PERFSCHEMA,SPIDER,SPHINX}=NO -DWITH_SAFEMALLOC=OFF -DWITH_SSL=bundled -DENABLE_GCOV=ON -G Ninja
            

            while with this command they are:

            $ cmake . -DCMAKE_BUILD_TYPE=Debug -DWITH_EMBEDDED_SERVER=OFF -DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,CONNECT,PERFSCHEMA,SPIDER,SPHINX}=NO  -DENABLE_GCOV=ON -G Ninja
            

            and we can validate:

            anel@anel:~/mariadb/10.6-fresh/libmariadb/mariadb_config$ ./mariadb_config --tlsinfo
            OpenSSL 1.1.1
            anel@anel:~/mariadb/10.6-fresh/libmariadb/mariadb_config$ find .|grep gcda
            ./CMakeFiles/mariadb_config.dir/mariadb_config.c.gcda
            

            Seems that problem is when with {-DWITH_SSL=bundled} in 10.6 only. It is built without gcda generated (not sure why GnuTLS 3.5.18 ?)
            Leaving to wlad or sanja.

            Here is some workaround:
            https://github.com/MariaDB/server/commit/2604ccfb53812074229228df07e56994d6fe2a79

            anel Anel Husakovic added a comment - - edited Seems like with this command gcda files are not created: $ cmake . -DCMAKE_BUILD_TYPE=Debug -DCONC_WITH_{UNITTEST,SSL}=OFF -DWITH_EMBEDDED_SERVER=OFF -DWITH_UNIT_TESTS=OFF -DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,CONNECT,PERFSCHEMA,SPIDER,SPHINX}=NO -DWITH_SAFEMALLOC=OFF -DWITH_SSL=bundled -DENABLE_GCOV=ON -G Ninja while with this command they are: $ cmake . -DCMAKE_BUILD_TYPE=Debug -DWITH_EMBEDDED_SERVER=OFF -DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,CONNECT,PERFSCHEMA,SPIDER,SPHINX}=NO -DENABLE_GCOV=ON -G Ninja and we can validate: anel@anel:~/mariadb/10.6-fresh/libmariadb/mariadb_config$ ./mariadb_config --tlsinfo OpenSSL 1.1.1 anel@anel:~/mariadb/10.6-fresh/libmariadb/mariadb_config$ find .|grep gcda ./CMakeFiles/mariadb_config.dir/mariadb_config.c.gcda Seems that problem is when with {-DWITH_SSL=bundled} in 10.6 only. It is built without gcda generated (not sure why GnuTLS 3.5.18 ?) Leaving to wlad or sanja . Here is some workaround: https://github.com/MariaDB/server/commit/2604ccfb53812074229228df07e56994d6fe2a79
            wlad Vladislav Vaintroub added a comment - - edited

            @Anel, I do not even compile on Linux every day. I never used gcov.
            If you link to blame the connector-C, assign to Georg. But before that,
            check if you're building Debug vs RelWithDebInfo, I bet would be is as simple as that.

            If you want to ask how to Debug compile flags, you can add some of the
            MESSAGE("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
            MESSAGE("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
            MESSAGE("CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")

            Ultimately, there is a https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html option, so that you can come up with evidence that something is different if you use GnuTLS, and if there is a real evidence, then maybe we can use some more advanced techniques, like tracing cmake to find out the bad guy.

            wlad Vladislav Vaintroub added a comment - - edited @Anel, I do not even compile on Linux every day. I never used gcov. If you link to blame the connector-C, assign to Georg. But before that, check if you're building Debug vs RelWithDebInfo, I bet would be is as simple as that. If you want to ask how to Debug compile flags, you can add some of the MESSAGE("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}") MESSAGE("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}") MESSAGE("CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") Ultimately, there is a https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html option, so that you can come up with evidence that something is different if you use GnuTLS, and if there is a real evidence, then maybe we can use some more advanced techniques, like tracing cmake to find out the bad guy.

            Started working

            anel Anel Husakovic added a comment - Started working

            10.6 flags:

            $ cmake . -LAH|grep -E "FLAGS|BUILD_TYPE|GCOV|WITH_SSL"
             
            CMAKE_ASM_FLAGS:STRING=
            CMAKE_ASM_FLAGS_DEBUG:STRING=-g
            CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
            CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
            CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
            CMAKE_BUILD_TYPE:STRING=Debug
            CMAKE_CXX_FLAGS:STRING=
            CMAKE_CXX_FLAGS_DEBUG:STRING=-g
            CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
            CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
            CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
            CMAKE_C_FLAGS:STRING=
            CMAKE_C_FLAGS_DEBUG:STRING=-g
            CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
            CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
            CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
            CMAKE_EXE_LINKER_FLAGS:STRING=
            CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            CMAKE_MODULE_LINKER_FLAGS:STRING=
            CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            CMAKE_SHARED_LINKER_FLAGS:STRING=
            CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            CMAKE_STATIC_LINKER_FLAGS:STRING=
            CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            ENABLE_GCOV:BOOL=ON
            WITH_MYSQLD_LDFLAGS:STRING=
            WITH_SSL:STRING=bundled
            WSREP_LIB_STRICT_BUILD_FLAGS:BOOL=OFF
            

            10.2 flags

             
            CMAKE_BUILD_TYPE:STRING=Debug
            CMAKE_CXX_FLAGS:STRING=
            CMAKE_CXX_FLAGS_DEBUG:STRING=-g
            CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
            CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
            CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
            CMAKE_C_FLAGS:STRING=
            CMAKE_C_FLAGS_DEBUG:STRING=-g
            CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
            CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
            CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
            CMAKE_EXE_LINKER_FLAGS:STRING=
            CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            CMAKE_MODULE_LINKER_FLAGS:STRING=
            CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            CMAKE_SHARED_LINKER_FLAGS:STRING=
            CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            CMAKE_STATIC_LINKER_FLAGS:STRING=
            CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
            CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
            CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
            CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
            ENABLE_GCOV:BOOL=ON
            WITH_MYSQLD_LDFLAGS:STRING=
            WITH_SSL:STRING=bundled
            

            diff between 10.6 and 10.2

            diff --git a/../bundled_ssl.txt b/../bundled-10.2.txt
            index 61b13c66332..af6b3d35be6 100644
            --- a/../bundled_ssl.txt
            +++ b/../bundled-10.2.txt
            @@ -1,8 +1,3 @@
            -CMAKE_ASM_FLAGS:STRING=
            -CMAKE_ASM_FLAGS_DEBUG:STRING=-g
            -CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
            -CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
            -CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
             CMAKE_BUILD_TYPE:STRING=Debug
             CMAKE_CXX_FLAGS:STRING=
             CMAKE_CXX_FLAGS_DEBUG:STRING=-g
            @@ -37,4 +32,3 @@ CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
             ENABLE_GCOV:BOOL=ON
             WITH_MYSQLD_LDFLAGS:STRING=
             WITH_SSL:STRING=bundled
            -WSREP_LIB_STRICT_BUILD_FLAGS:BOOL=OFF
            

            compile_commands.json obtained from CMAKE_EXPORT_COMPILE_COMMANDS for 10.6 in the attachment
            compile_commands_10.6_with_ssl_bundled.json

            All gcda files are created in 10.6 - seems this is not a bug.
            Learned about compiled_commands.json - seems people are using it (found in gitignore ) patch 2b67b7cb08bf.

            anel Anel Husakovic added a comment - 10.6 flags: $ cmake . -LAH|grep -E "FLAGS|BUILD_TYPE|GCOV|WITH_SSL"   CMAKE_ASM_FLAGS:STRING= CMAKE_ASM_FLAGS_DEBUG:STRING=-g CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_BUILD_TYPE:STRING=Debug CMAKE_CXX_FLAGS:STRING= CMAKE_CXX_FLAGS_DEBUG:STRING=-g CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_C_FLAGS:STRING= CMAKE_C_FLAGS_DEBUG:STRING=-g CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_STATIC_LINKER_FLAGS:STRING= CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= ENABLE_GCOV:BOOL=ON WITH_MYSQLD_LDFLAGS:STRING= WITH_SSL:STRING=bundled WSREP_LIB_STRICT_BUILD_FLAGS:BOOL=OFF 10.2 flags   CMAKE_BUILD_TYPE:STRING=Debug CMAKE_CXX_FLAGS:STRING= CMAKE_CXX_FLAGS_DEBUG:STRING=-g CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_C_FLAGS:STRING= CMAKE_C_FLAGS_DEBUG:STRING=-g CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_STATIC_LINKER_FLAGS:STRING= CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= ENABLE_GCOV:BOOL=ON WITH_MYSQLD_LDFLAGS:STRING= WITH_SSL:STRING=bundled diff between 10.6 and 10.2 diff --git a/../bundled_ssl.txt b/../bundled-10.2.txt index 61b13c66332..af6b3d35be6 100644 --- a/../bundled_ssl.txt +++ b/../bundled-10.2.txt @@ -1,8 +1,3 @@ -CMAKE_ASM_FLAGS:STRING= -CMAKE_ASM_FLAGS_DEBUG:STRING=-g -CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG -CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG -CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_BUILD_TYPE:STRING=Debug CMAKE_CXX_FLAGS:STRING= CMAKE_CXX_FLAGS_DEBUG:STRING=-g @@ -37,4 +32,3 @@ CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= ENABLE_GCOV:BOOL=ON WITH_MYSQLD_LDFLAGS:STRING= WITH_SSL:STRING=bundled -WSREP_LIB_STRICT_BUILD_FLAGS:BOOL=OFF compile_commands.json obtained from CMAKE_EXPORT_COMPILE_COMMANDS for 10.6 in the attachment compile_commands_10.6_with_ssl_bundled.json All gcda files are created in 10.6 - seems this is not a bug. Learned about compiled_commands.json - seems people are using it (found in gitignore ) patch 2b67b7cb08bf.

            People

              anel Anel Husakovic
              anel Anel Husakovic
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.