Uploaded image for project: 'Percona Server for MySQL'
  1. Percona Server for MySQL
  2. PS-3270

LP #1427273: buf_validate may see an unlatched but I/O fixed for read page

    Details

    • Type: Bug
    • Status: Done
    • Priority: Low
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None

      Description

      **Reported in Launchpad by Laurynas Biveinis last update 03-03-2015 13:20:16

      A low-probability debug build failure seen once on innodb_zip.innodb_wl6501_debug:

      Thread 1 (Thread 0x7f48cebfd700 (LWP 2852)):
      ...
      #6 0x000000000104b69b in ut_dbg_assertion_failed (expr=0x14e3be8 "rw_lock_is_locked(&block->lock, RW_LOCK_X)", file=0x14e1410 "/mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0buf.cc", line=5794) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/ut/ut0dbg.cc:68
      #7 0x00000000010b0cdc in buf_pool_validate_instance (buf_pool=0x2b4e130) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0buf.cc:5793
      #8 0x00000000010b14a5 in buf_validate () at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0buf.cc:5952
      ...

      it asserts that a page, that is I/O-fixed for read, is X-latched. The assert failed because of

      Thread 3 (Thread 0x7f48f6502700 (LWP 2860)):
      #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
      #1 0x0000000000f187fc in os_event::wait (this=0x2b4eae0) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/os/os0event.cc:217
      #2 0x0000000000f181b9 in os_event::wait_low (this=0x2b4eae0, reset_sig_count=1) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/os/os0event.cc:446
      #3 0x0000000000f18608 in os_event_wait_low (event=0x2b4eae0, reset_sig_count=1) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/os/os0event.cc:700
      #4 0x0000000001000fdb in sync_array_wait_event (arr=0x2ab8bf0, cell=@0x7f48f64fbb68: 0x7f48f7372020) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/sync/sync0arr.cc:453
      #5 0x0000000000e9d088 in TTASEventMutex<DebugPolicy>::wait (this=0x2b4e1c0, filename=0x14e9ea0 "/mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0lru.cc", line=1182) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/include/ut0mutex.ic:80
      #6 0x0000000000e9c4d3 in TTASEventMutex<DebugPolicy>::spin_and_wait (this=0x2b4e1c0, max_spins=30, max_delay=6, filename=0x14e9ea0 "/mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0lru.cc", line=1182) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/include/ib0mutex.h:896
      #7 0x0000000000e9b850 in TTASEventMutex<DebugPolicy>::enter (this=0x2b4e1c0, max_spins=30, max_delay=6, filename=0x14e9ea0 "/mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0lru.cc", line=1182) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/include/ib0mutex.h:784
      #8 0x0000000000e9ab7d in PolicyMutex<TTASEventMutex<DebugPolicy> >::enter (this=0x2b4e1b8, n_spins=30, n_delay=6, name=0x14e9ea0 "/mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0lru.cc", line=1182) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/include/ib0mutex.h:1038
      #9 0x00000000010c966f in buf_LRU_get_free_only (buf_pool=0x2b4e130) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0lru.cc:1182
      #10 0x00000000011997c1 in buf_buddy_alloc_low (buf_pool=0x2b4e130, i=4) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0buddy.cc:517
      #11 0x00000000010a1bf4 in buf_buddy_alloc (buf_pool=0x2b4e130, size=16384) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/include/buf0buddy.ic:102
      #12 0x00000000010af060 in buf_page_create (page_id=..., page_size=..., mtr=0x7f48f64fc5a0) at /mnt/workspace/mysql-5.7-param/BUILD_TYPE/debug/Host/ubuntu-precise-64bit/storage/innobase/buf/buf0buf.cc:5112

      with the code fragment immediately before

      /* Prevent race conditions during buf_buddy_alloc()
      by IO-fixing and X-latching the block. */
      buf_page_set_io_fix(&block->page, BUF_IO_READ);
      rw_lock_x_lock(&block->lock);

      The fix would be swapping the I/O fix set and the X latch.

        Smart Checklist

          Attachments

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                lpjirasync lpjirasync (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: