[log] Condition variable has not been initialized

When testing boost.log for race conditions using valgrind drd, some non initialized condition variables are reported at initialization time. I am using Valgrind-3.6.0.SVN and gcc version 4.4.4 (Debian 4.4.4-1). These are the valgrind error messages: ==27651== condition variable has not been initialized: cond 0x6174420 ==27651== at 0x4C267B9: pthread_cond_broadcast@* (drd_pthread_intercepts.c:756) ==27651== by 0x66DBCD2: ??? (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x6719E85: ??? (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x66C4BD2: ??? (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x7FF000561: ??? ==27651== by 0x722F63762F656771: ??? ==27651== by 0x2F6E69622F657068: ??? ==27651== by 0x722F726576726572: ??? ==27651== by 0x767265732D657068: ??? ==27651== by 0x2D2D00772D007264: ??? ==27651== by 0x72635F776F6C6C60: ??? ==27651== by 0x62645F65746164: ??? ==27651== ==27651== condition variable has not been initialized: cond 0x6174420 ==27651== at 0x4C267B9: pthread_cond_broadcast@* (drd_pthread_intercepts.c:756) ==27651== by 0x66D7F1A: boost::log_mt_posix::basic_core<char>::get() (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0xB5087C: boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>, boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>
::basic_logger() (basic_logger.hpp:122) ==27651== by 0xB4F166: boost::log_mt_posix::sources::basic_severity_logger<boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>, boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex> , util::logging::severity_level>::basic_severity_logger() (severity_feature.hpp:169) ==27651== by 0xB4DA3D: boost::log_mt_posix::sources::basic_composite_logger<char, boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>, boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>, boost::mpl::vector1<boost::log_mt_posix::sources::severity<util::logging::severity_level>
::basic_composite_logger() (basic_logger.hpp:391) ==27651== by 0xB4C771: boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>::severity_logger_mt() (severity_logger.hpp:77) ==27651== by 0xB4BA3C: __static_initialization_and_destruction_0(int, int) (Logging.cpp:35) ==27651== by 0xB4BAC6: global constructors keyed to _ZN4util7logging3aux9theLoggerE (Logging.cpp:215) ==27651== by 0xB58095: ??? (in /home/jorge/vc/ripe/bin/server/ripe-server) ==27651== by 0x9D3732: ??? (in /home/jorge/vc/ripe/bin/server/ripe-server) ==27651== ==27651== condition variable has not been initialized: cond 0x6174420 ==27651== at 0x4C267B9: pthread_cond_broadcast@* (drd_pthread_intercepts.c:756) ==27651== by 0x5F6AD14: ??? (in /usr/local/lib/libboost_thread.so.1.42.0) ==27651== by 0x5F6AD48: boost::detail::get_current_thread_data() (in /usr/local/lib/libboost_thread.so.1.42.0) ==27651== by 0x5F6AD68: boost::detail::find_tss_data(void const*) (in /usr/local/lib/libboost_thread.so.1.42.0) ==27651== by 0x5F6ADD8: boost::detail::get_tss_data(void const*) (in /usr/local/lib/libboost_thread.so.1.42.0) ==27651== by 0x66D6FAB: boost::log_mt_posix::basic_core<char>::implementation::init_thread_data() (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x66D7619: boost::log_mt_posix::basic_core<char>::open_record(boost::log_mt_posix::basic_attribute_set<char> const&) (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x9F5432: boost::log_mt_posix::basic_record<char> boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>, boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex> ::open_record_unlocked<boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, util::logging::severity_level const> (boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, util::logging::severity_level const> const&) (basic_logger.hpp:269) ==27651== by 0x9F3EDE: boost::log_mt_posix::basic_record<char> boost::log_mt_posix::sources::basic_severity_logger<boost::log_mt_posix::sources::basic_logger<char, boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>, boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex> , util::logging::severity_level>::open_record_unlocked<boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, util::logging::severity_level const> (boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, util::logging::severity_level const> const&) (severity_feature.hpp:226) ==27651== by 0x9F2511: boost::log_mt_posix::basic_record<char> boost::log_mt_posix::sources::basic_composite_logger<char, boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>, boost::log_mt_posix::sources::multi_thread_model<boost::log_mt_posix::aux::light_rw_mutex>, boost::mpl::vector1<boost::log_mt_posix::sources::severity<util::logging::severity_level> ::open_record<boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, util::logging::severity_level const> (boost::parameter::aux::tagged_argument<boost::log_mt_posix::keywords::tag::severity, util::logging::severity_level const> const&) (basic_logger.hpp:509) ==27651== by 0xB4B5DF: util::logging::init(util::logging::severity_level, std::string const&) (Logging.cpp:190) ==27651== by 0xB49DA0: util::logging::init(std::string const&, std::string const&) (Logging.cpp:96) ==27651== ==27651== condition variable has not been initialized: cond 0x6174420 ==27651== at 0x4C267B9: pthread_cond_broadcast@* (drd_pthread_intercepts.c:756) ==27651== by 0x66D8D1A: ??? (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x66D9F43: boost::log_mt_posix::aux::stream_provider<char>::allocate_compound(boost::log_mt_posix::basic_record<char> const&) (in /usr/local/lib/libboost_log.so.1.42.0) ==27651== by 0x9F3F72: boost::log_mt_posix::aux::record_pump<boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level> ::record_pump(boost::log_mt_posix::sources::severity_logger_mt<util::logging::severity_level>&, boost::log_mt_posix::basic_record<char> const&) (record_ostream.hpp:293) ==27651== by 0xB4B5FC: util::logging::init(util::logging::severity_level, std::string const&) (record_ostream.hpp:330) ==27651== by 0xB49DA0: util::logging::init(std::string const&, std::string const&) (Logging.cpp:96) ==27651== by 0x9DB05C: util::Configuration::parseCommandLine(int, char**) (Configuration.hpp:176) ==27651== by 0x9D6C5C: ripe_server::Configuration::Configuration(int, char**) (Configuration.cpp:70) ==27651== by 0xA48A86: main (posix_main.cpp:94) ==27651==

On 05/29/2010 02:06 AM, Jorge Moraleda wrote:
When testing boost.log for race conditions using valgrind drd, some non initialized condition variables are reported at initialization time. I am using Valgrind-3.6.0.SVN and gcc version 4.4.4 (Debian 4.4.4-1).
These are the valgrind error messages:
It looks like a false alarm. The condition variable is defined and used by boost::once, and it is initialized statically in the Boost.Thread library.
participants (2)
-
Andrey Semashev
-
Jorge Moraleda