id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 8730,Race condition in once_block.hpp,Antony Polukhin,Andrey Semashev,"First of all, `once_block_flag` is not thread safe. `status` variable shall be an atomic variable there. Another issue is `static boost::log::once_block_flag flag_var`. When previous issue will be fixed and `once_block_flag` will become thread safe, keyword `static` will do bad things in C++03. Static variable `foo_type foo` inside method in C++03 is equal to: {{{ // In global namespace bool is_foo_inited = false; char place_for_foo[sizeof(foo_type)]; // in place where a static variable is used if (!is_foo_inited) { new (place_for_foo) foo_type(some parameters); is_foo_inited = true; } return reinterpret_cast(*place_for_foo); }}} Beacuse `is_foo_inited` is not atomic and does not act as a spin-lock during initialization - race conditions are possible. ",Bugs,closed,To Be Determined,log,Boost 1.54.0,Problem,fixed,call_once atomics thread log,