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

The macro MYSQL_THDVAR_ULONG leads to undefined behaviour, calling mysql_sys_var_long

Details

    Description

      Now that MDEV-26272 has been fixed and a cmake -DWITH_UBSAN=ON build with clang can pass the server bootstrap, we can find more undefined behaviour that is not flagged by GCC. Here is an example:

      10.4 832e96deb6f368591dcb35a4fa33b2fd770aa17a

      /mariadb/10.4/storage/innobase/handler/ha_innodb.cc:1821:9: runtime error: call to function mysql_sys_var_long(THD*, int) through pointer to incorrect function type 'unsigned long *(*)(THD *, int)'
      

      This is flagged for the function thd_lock_wait_timeout(), which simply accesses a data member that has been defined as follows:

      static MYSQL_THDVAR_ULONG(lock_wait_timeout, PLUGIN_VAR_RQCMDARG,
        "Timeout in seconds an InnoDB transaction may wait for a lock before being rolled back. Values above 100000000 disable the timeout.",
        NULL, NULL, 50, 0, 1024 * 1024 * 1024, 0);
      // ...
      static struct st_mysql_sys_var* innobase_system_variables[]= {
      // ...
        MYSQL_SYSVAR(lock_wait_timeout),
      // ...
        NULL
      };
      maria_declare_plugin(innobase)
      {
      // ...
      innobase_system_variables
      // ...
      },
      // ...
      maria_declare_plugin_end;
      

      Attachments

        Issue Links

          Activity

            marko Marko Mäkelä created issue -
            marko Marko Mäkelä made changes -
            Field Original Value New Value
            marko Marko Mäkelä made changes -
            Status Open [ 1 ] Confirmed [ 10101 ]
            marko Marko Mäkelä made changes -
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 11.0 [ 28320 ]
            Fix Version/s 11.3 [ 28565 ]
            bnestere Brandon Nesterenko made changes -
            Assignee Sergei Golubchik [ serg ] Brandon Nesterenko [ JIRAUSER48702 ]
            danblack Daniel Black made changes -
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 10.4 [ 22408 ]
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 11.1 [ 28549 ]
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 11.2(EOL) [ 28603 ]
            Roel Roel Van de Paar made changes -
            Labels UBSAN UBSAN affects-tests
            Roel Roel Van de Paar made changes -
            Affects Version/s 11.8 [ 29921 ]
            Roel Roel Van de Paar made changes -
            Fix Version/s 11.4 [ 29301 ]
            Fix Version/s 11.7 [ 29815 ]
            Fix Version/s 11.8 [ 29921 ]
            Roel Roel Van de Paar made changes -
            Fix Version/s 11.8 [ 29921 ]
            danblack Daniel Black made changes -
            Assignee Brandon Nesterenko [ JIRAUSER48702 ] Daniel Black [ danblack ]
            danblack Daniel Black made changes -
            Status Confirmed [ 10101 ] In Progress [ 3 ]
            danblack Daniel Black made changes -
            Assignee Daniel Black [ danblack ] Brandon Nesterenko [ JIRAUSER48702 ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            danblack Daniel Black made changes -
            danblack Daniel Black made changes -
            danblack Daniel Black made changes -
            danblack Daniel Black made changes -
            danblack Daniel Black made changes -
            danblack Daniel Black made changes -
            bnestere Brandon Nesterenko made changes -
            Assignee Brandon Nesterenko [ JIRAUSER48702 ] Daniel Black [ danblack ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            danblack Daniel Black made changes -
            issue.field.resolutiondate 2025-01-12 02:42:17.0 2025-01-12 02:42:16.835
            danblack Daniel Black made changes -
            Fix Version/s 10.5.28 [ 29952 ]
            Fix Version/s 10.5 [ 23123 ]
            Fix Version/s 10.6 [ 24028 ]
            Fix Version/s 10.11 [ 27614 ]
            Fix Version/s 11.4 [ 29301 ]
            Fix Version/s 11.7 [ 29815 ]
            Resolution Fixed [ 1 ]
            Status Stalled [ 10000 ] Closed [ 6 ]
            JIraAutomate JiraAutomate made changes -
            Fix Version/s 10.6.21 [ 29953 ]
            Fix Version/s 10.11.11 [ 29954 ]
            Fix Version/s 11.4.5 [ 29956 ]
            Fix Version/s 11.7.2 [ 29914 ]

            People

              danblack Daniel Black
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              5 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.