Skip to content

Commit ed99e2c

Browse files
committed
MDEV-10341: InnoDB: Failing assertion: mutex_own(mutex) - mutex_exit_func
Followup from 5.5 patch. Removing memory barriers on intel is wrong as this doesn't prevent the compiler and/or processor from reorganizing reads before the mutex release. Forcing a memory barrier before reading the waiters will guarantee that no speculative reading takes place.
1 parent 4eb898b commit ed99e2c

File tree

2 files changed

+2
-18
lines changed

2 files changed

+2
-18
lines changed

storage/innobase/include/os0sync.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -849,15 +849,7 @@ for synchronization */
849849
} while (0);
850850

851851
/** barrier definitions for memory ordering */
852-
#ifdef IB_STRONG_MEMORY_MODEL
853-
/* Performance regression was observed at some conditions for Intel
854-
architecture. Disable memory barrier for Intel architecture for now. */
855-
# define os_rmb do { } while(0)
856-
# define os_wmb do { } while(0)
857-
# define os_mb do { } while(0)
858-
# define IB_MEMORY_BARRIER_STARTUP_MSG \
859-
"Memory barrier is not used"
860-
#elif defined(HAVE_IB_GCC_ATOMIC_THREAD_FENCE)
852+
#if defined(HAVE_IB_GCC_ATOMIC_THREAD_FENCE)
861853
# define HAVE_MEMORY_BARRIER
862854
# define os_rmb__atomic_thread_fence(__ATOMIC_ACQUIRE)
863855
# define os_wmb__atomic_thread_fence(__ATOMIC_RELEASE)

storage/xtradb/include/os0sync.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -900,15 +900,7 @@ for synchronization */
900900
} while (0);
901901

902902
/** barrier definitions for memory ordering */
903-
#ifdef IB_STRONG_MEMORY_MODEL
904-
/* Performance regression was observed at some conditions for Intel
905-
architecture. Disable memory barrier for Intel architecture for now. */
906-
# define os_rmb do { } while(0)
907-
# define os_wmb do { } while(0)
908-
# define os_mb do { } while(0)
909-
# define IB_MEMORY_BARRIER_STARTUP_MSG \
910-
"Memory barrier is not used"
911-
#elif defined(HAVE_IB_GCC_ATOMIC_THREAD_FENCE)
903+
#if defined(HAVE_IB_GCC_ATOMIC_THREAD_FENCE)
912904
# define HAVE_MEMORY_BARRIER
913905
# define os_rmb__atomic_thread_fence(__ATOMIC_ACQUIRE)
914906
# define os_wmb__atomic_thread_fence(__ATOMIC_RELEASE)

0 commit comments

Comments
 (0)