id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 13265,boost atomic lib memory_order error,haisql@…,timblechmann,"boost atomic lib memory_order error. someone deleted memory_order_release/memory_order_acquire code, which should be translate to sfence/lfence , but now you see that they were removed. BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT { if (order == memory_order_seq_cst) { __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""mfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); } else if ((order & (memory_order_acquire | memory_order_release)) != 0) { __asm__ __volatile__ ("""" ::: ""memory""); } } I suggest code is: BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT { if (order == memory_order_seq_cst) { __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""mfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); return; } if ((order & (memory_order_acquire )!=0 ){ __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""lfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); return; } if ((order & (memory_order_release )!=0 ){ __asm__ __volatile__ ( #if defined(__x86_64__) || defined(__SSE2__) ""sfence\n"" #else ""lock; addl $0, (%%esp)\n"" #endif ::: ""memory"" ); } } Linux system do not delete lfence and sfence code, but why C++ lib deleted, this will cause error in multi_thread programe. ",Bugs,new,To Be Determined,atomic,Boost 1.63.0,Showstopper,,,