Re: [Cppcms-users] URGENT: strange bug ocurring
Brought to you by:
artyom-beilis
From: <ele...@ex...> - 2012-08-01 10:45:39
|
Using helgrind I get this ==12488== Possible data race during write of size 8 at 0x69b0008 by thread #6 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x546F82F: booster::log::message::message(booster::log::level_type, char const*, char const*, int) (log.cpp:57) ==12488== by 0x4ED819D: cppcms::http::details::output_device::write(char const*, int) (http_response.cpp:279) ==12488== by 0x4ED83E6: cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow(int) (http_response.cpp:131) ==12488== by 0x6756214: std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED5589: cppcms::http::response::finalize() (streambuf:427) ==12488== by 0x4EDB40C: cppcms::http::context::complete_response() (http_context.cpp:117) ==12488== by 0x4EDB8F0: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:156) ==12488== by 0x4EDD172: booster::function<void ()()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() (bind.hpp:385) ==12488== by 0x4EDEDD4: cppcms::impl::thread_pool::worker() (function.h:168) ==12488== by 0x54E227C: booster_thread_func (function.h:168) ==12488== This conflicts with a previous write of size 8 by thread #9 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED8F05: std::string cppcms::http::details::itoa<int>(int) (http_response.cpp:51) ==12488== by 0x4ED63C4: cppcms::http::response::status(int, std::string const&) (http_response.cpp:632) ==12488== by 0x4ED65DB: cppcms::http::response::status(int) (http_response.cpp:628) ==12488== by 0x4EFF5D5: cppcms::impl::file_server::show404() (internal_file_server.cpp:453) ==12488== by 0x4F006F7: cppcms::impl::file_server::main(std::string) (internal_file_server.cpp:424) ==12488== by 0x4EDB840: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:131) ==12488== ==12488== Possible data race during write of size 8 at 0x69b0008 by thread #6 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x547127A: booster::log::sinks::format_plain_text_message(booster::log::message const&) (log.cpp:268) ==12488== by 0x547197A: booster::log::sinks::standard_error::log(booster::log::message const&) (log.cpp:314) ==12488== by 0x546E880: booster::log::logger::log(booster::log::message const&) (log.cpp:229) ==12488== by 0x546E920: booster::log::message::~message() (log.cpp:62) ==12488== by 0x4ED81CE: cppcms::http::details::output_device::write(char const*, int) (http_response.cpp:279) ==12488== by 0x4ED83E6: cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow(int) (http_response.cpp:131) ==12488== by 0x6756214: std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED5589: cppcms::http::response::finalize() (streambuf:427) ==12488== by 0x4EDB40C: cppcms::http::context::complete_response() (http_context.cpp:117) ==12488== by 0x4EDB8F0: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:156) ==12488== This conflicts with a previous write of size 8 by thread #9 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED8F05: std::string cppcms::http::details::itoa<int>(int) (http_response.cpp:51) ==12488== by 0x4ED63C4: cppcms::http::response::status(int, std::string const&) (http_response.cpp:632) ==12488== by 0x4ED65DB: cppcms::http::response::status(int) (http_response.cpp:628) ==12488== by 0x4EFF5D5: cppcms::impl::file_server::show404() (internal_file_server.cpp:453) ==12488== by 0x4F006F7: cppcms::impl::file_server::main(std::string) (internal_file_server.cpp:424) ==12488== by 0x4EDB840: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:131) I also get a lot of these: ==12515== Use of uninitialised value of size 8 ==12515== at 0x545B29D: booster::aio::io_service::set_timer_event(booster::ptime const&, booster::callback<void ()(booster::system::error_code const&)> const&) (io_service.cpp:216) ==12515== by 0x5459E71: booster::aio::deadline_timer::async_wait(booster::callback<void ()(booster::system::error_code const&)> const&) (deadline_timer.cpp:95) ==12515== by 0x4F80394: cppcms::impl::cgi::http_watchdog::check(booster::system::error_code const&) (http_api.cpp:728) ==12515== by 0x545A261: booster::aio::deadline_timer::waiter::operator()(booster::system::error_code const&) (callback.h:211) ==12515== by 0x545E5DD: booster::aio::event_loop_impl::run_one(booster::aio::reactor::event*, unsigned long) (callback.h:201) ==12515== by 0x545BD0F: booster::aio::io_service::run() (io_service.cpp:144) ==12515== by 0x4EB6AA4: cppcms::service::run() (service.cpp:574) ==12515== by 0x476CE5: main (main.cpp:23) I keep looking for more |