On Wed, Jul 29, 2009 at 12:15 PM, Pavel Shevaev<[email protected]> wrote: > Folks, helgrind reports possible dataraces for std::string instances > which, I believe, are not dataraces. > > For example, I have the following lines in the log: > > ==21259== Possible data race during read of size 4 at 0x5ac5ef0 by thread #6 > ==21259== at 0x5A70662: std::string::_Rep::_M_is_leaked() const > (basic_string.h:189) > ==21259== by 0x5A72076: > std::string::_Rep::_M_grab(std::allocator<char> const&, > std::allocator<char> const&) (basic_string.h:221) > ==21259== by 0x5A7229B: std::basic_string<char, > std::char_traits<char>, std::allocator<char> >>::basic_string(std::string const&) (basic_string.tcc:179) > .... > ==21259== This conflicts with a previous write of size 4 by thread #8 > ==21259== at 0x5A70690: std::string::_Rep::_M_set_sharable() > (basic_string.h:201) > ==21259== by 0x5A1E600: > _ZNSs4_Rep26_M_set_length_and_sharableEj@@GLIBCXX_3.4.5 > (basic_string.h:206) > ==21259== by 0x5A72FAC: std::string::_M_mutate(unsigned int, > unsigned int, unsigned int) (basic_string.tcc:471) > ==21259== by 0x5A738B3: std::string::_M_replace_safe(unsigned int, > unsigned int, char const*, unsigned int) (basic_string.tcc:659) > .... > > I examined the callstack and I'm pretty much sure there should be no > datarace since distinct std::string objects are used. > I heard std::string may internally share some data even with distinct > std::string objects but IIRC standard guarantees thread safety for > distinct std::string objects. > > Probably helgrind just should be configured to suppress such errors > from std::string? And if yes, could please share your suppression > file? ;) > > I'm using valgrind 3.4.1 on linux x86.
Can you post a small standalone program that allows to reproduce this behavior ? And which gcc and libstdc++ versions are you using ? The std::string implementation in libstdc++ uses reference counting (via the atomic variable _M_refcount). There might be a data race in the reference counting implementation in libstdc++. Bart. ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Valgrind-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/valgrind-users
