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

Tests on GCOV build fail with Merge mismatch for function

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 5.5(EOL), 10.1(EOL), 10.2(EOL), 10.3(EOL), 10.4(EOL), 10.6
    • 10.5, 10.6
    • Tests
    • None
    • gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 ; also observed on Xenial with gcc 5.4.0 and 7.4.0

    Description

      To reproduce:

      cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=ON
      make -j6
      lcov --directory `pwd` --zerocounters
      cd mysql-test
      wget https://jira.mariadb.org/secure/attachment/49027/mdev20694.tar.gz
      tar zxf mdev20694.tar.gz
      perl ./mtr `echo "bug.gcov1 bug.gcov2"{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}` --noreorder --verbose-restart
      

      Soon enough, the test run fails with

      ...
      bug.gcov2                                [ pass ]     45
      worker[1] > Restart [mysqld.1 - pid: 9243, winpid: 9243] - using different config file
      bug.gcov1                                [ pass ]       
      worker[1] > Restart [mysqld.1 - pid: 9262, winpid: 9262] - using different config file
      worker[1] > Restart [mysqld.2 - pid: 9264, winpid: 9264] - using different config file
      bug.gcov2                                [ fail ]
              Test ended at 2019-09-28 19:16:07
       
      CURRENT_TEST: bug.gcov2
      --- /data/src/10.4-gcov/mysql-test/suite/bug/gcov2.result       2019-09-28 19:10:25.000000000 +0300
      +++ /data/src/10.4-gcov/mysql-test/suite/bug/gcov2.reject       2019-09-28 19:16:06.996515133 +0300
      @@ -1,2 +1,3 @@
       mysqld would have been started with the following arguments:
       
      +profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/sql_type.cc.gcda:Merge mismatch for function 1201
       
      mysqltest: Result length mismatch
      

      The archive contents is very simple, it's just added as a tarball for convenience. There are two test files in it, a cnf file for the first test, and result files for both:

      gcov1.test

      select 1;
      

      gcov1.cnf

      # Use default setting for mysqld processes
      !include include/default_mysqld.cnf
      !include include/default_client.cnf
       
      [mysqld.1]
       
      [mysqld.2]
       
      [ENV]
      MASTER_MYPORT=           @mysqld.1.port
      MASTER_MYSOCK=           @mysqld.1.socket
       
      SLAVE_MYPORT=            @mysqld.2.port
      SLAVE_MYSOCK=            @mysqld.2.socket
      

      gcov2.test

      --replace_regex /.*mysqld/mysqld/
      exec $MYSQLD --print-defaults 2>&1;
      

      The second test is derived from main.mysqld--defaults-file. The first one can be anything, as long as it requires two servers.

      It is not the only unique way to reproduce the problem. Here is another one, for example. gcov1 test is the same one as above:

      perl ./mtr `echo "bug.gcov1 main.1st"{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}` --noreorder --verbose-restart
      perl ./mtr main.1st
      

      The first test run passes, there are no errors. But the second one produces the errors already on the bootstrap:

      Logging: ./mtr  main.1st
      vardir: /data/src/10.4-gcov/mysql-test/var
      Checking leftover processes...
      Removing old var directory...
      Creating var directory '/data/src/10.4-gcov/mysql-test/var'...
      Checking supported features...
      profiling:/data/src/10.4-gcov/storage/innobase/CMakeFiles/innobase.dir/lock/lock0lock.cc.gcda:Merge mismatch for function 460
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/item_timefunc.cc.gcda:Merge mismatch for function 454
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/item_create.cc.gcda:Merge mismatch for function 333
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/item.cc.gcda:Merge mismatch for function 1238
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/handler.cc.gcda:Merge mismatch for function 868
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/sql_yacc_ora.cc.gcda:Merge mismatch for function 164
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/sql_type.cc.gcda:Merge mismatch for function 798
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/opt_subselect.cc.gcda:Merge mismatch for function 100
      profiling:/data/src/10.4-gcov/sql/CMakeFiles/sql.dir/sql_acl.cc.gcda:Merge mismatch for function 159
      MariaDB Version 10.4.9-MariaDB-debug
       - SSL connections supported
       - binaries are debug compiled
       - binaries built with wsrep patch
      Collecting tests...
      Installing system database...
      

      Reproducible on all of current 5.5-10.4. I didn't try 10.5, but I don't expect any difference.
      Couldn't check old 5.5 versions, as even 5.5.40 no longer builds on my machine.

      Attachments

        Issue Links

          Activity

            People

              serg Sergei Golubchik
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

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