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,