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

too early pthread_mutex_unlock in TC_LOG_MMAP::log_xid

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.5.28, 5.3.9, 5.2.12, 5.1.62
    • Fix Version/s: 5.5.28a, 5.3.11, 5.2.13, 5.1.66
    • Component/s: None
    • Labels:
      None

      Description

      In this code:

      5660 int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid)
      5661 {
      ...
      5713     for (;;)
      5714     {
      5715       int not_dirty = p->state != DIRTY;
      5716       pthread_mutex_unlock(&p->lock);
      5717       if (not_dirty || !syncing)
      5718         break;
      ...
      5733     pthread_mutex_unlock(&p->lock);
      

      the mutex on the line 5716 is unlocked too early. After the break on the line 5718 the loop with end with the mutex being unlocked, while the code below assumes that it is locked.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            serg Sergei Golubchik added a comment -

            pushed into 5.1

            Show
            serg Sergei Golubchik added a comment - pushed into 5.1

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                serg Sergei Golubchik
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 1 hour
                  1h