id summary reporter owner description type status milestone component version severity resolution keywords cc 11362 smart_ptr spinlocks leads to livelock on ARM Cortex-A9 CPUs alex Peter Dimov "Spinlock used in smart_ptr for ARM architecture (smart_ptr/details/spinlock_gcc_arm.hpp) relies on swp/mcr instruction sequence or ldrex/strex/dmb depending on ARM version. Both these implementations are affected by an ARM issue described in errata 754327 for ARM Cortex-A9 CPU. Suggested fix is to add ""dmb"" instruction to change spinlock::unlock() method: void unlock() { __asm__ __volatile__( BOOST_SP_ARM_BARRIER ::: ""memory"" ); *const_cast< int volatile* >( &v_ ) = 0; __asm__ __volatile__( BOOST_SP_ARM_BARRIER ::: ""memory"" ); } Second barrier was added as recommended workaround from ARM errata document." Bugs closed To Be Determined smart_ptr Boost 1.57.0 Problem fixed arm spinlock