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

LP:782223 - Query_cache::resize() frees memory containing active locks

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Minor
    • Resolution: Fixed
    • None
    • None
    • None

    Description

      Found when investigating Windows application verifier errors (application verifier is sort-of valgrind).

      The callstack leading of "free" containing critical section is:
      mysqld!free
      my_no_flags_free
      Query_cache::free_cache
      Query_cache::resize
      fix_query_cache_size
      set_var::update
      sql_set_variables
      mysql_execute_command
      mysql_parse

      The callstack of critical section allocation is :
      pthread_cond_init
      my_rwlock_init
      Query_cache_query::init_n_lock
      Query_cache::store_query
      execute_sqlcom_select
      mysql_execute_command
      mysql_parse

      Why freeing a heap block containing active critical section is bad

      • in the best case (the critical section is unlocked) it may lead to resource leakage, e.g underlying Windows event objects will be leaked.
      • in the worst case (critical section is locked) it could lead to random hangs when the freed memory is again reused for another critical section

      Attachments

        Activity

          People

            wlad Vladislav Vaintroub
            wlad Vladislav Vaintroub
            Votes:
            0 Vote for this issue
            Watchers:
            0 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.