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

incorrect binary search in remove_status_vars()

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 10.0.4, 5.5.33a
    • Fix Version/s: 5.5.34, 10.0.6
    • Component/s: None
    • Labels:

      Description

      On INSTALL SONAME 'ha_tokudb.so' when TokuDB cannot be installed (for example, because transparent hugepages are enabled), MariaDB hangs.

      The reason is the remove_status_vars() function that has incorrectly implemented binary search to remove plugin variables from the all-variables list. The code

            for (; b-a > 0; c= (a+b)/2)
            {
              res= show_var_cmp(list, all+c);
              if (res < 0)
                b= c;
              else if (res > 0)
                a= c;
              else
                break;
            }

      in my test, a=129, b=130. So, c=129, in comparison I get res > 0, and the loop continues till infinity.

        Attachments

          Activity

            People

            • Assignee:
              bar Alexander Barkov
              Reporter:
              serg Sergei Golubchik
            • Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: