public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "Raimund dot Merkert at baesystems dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/32667] New: builtin operator= generates memcpy with overlapping memory regions Date: Sat, 07 Jul 2007 17:55:00 -0000 [thread overview] Message-ID: <bug-32667-5307@http.gcc.gnu.org/bugzilla/> (raw) This code generates a warning when run with valgrind: #include <vector> using namespace ::std; struct X { double values[10]; }; int main() { vector<X> x; x.push_back(X()); for (vector<X>::iterator i=x.begin();i!=x.end();++i) { *i = *(x.end()-1); } return 0; } g++ test.cpp -o foo -O3 Valgrind error: valgrind --tool=memcheck foo ==24513== Memcheck, a memory error detector for x86-linux. ==24513== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al. ==24513== Using valgrind-2.2.0, a program supervision framework for x86-linux. ==24513== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al. ==24513== For more details, rerun with: -v ==24513== ==24513== Source and destination overlap in memcpy(0x1BB68028, 0x1BB68028, 80) ==24513== at 0x1B9057E5: memcpy (in /usr/lib/valgrind/vgpreload_memcheck.so) ==24513== by 0x8048696: main (in /home/ray/tmp/foo) ==24513== ==24513== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 17 from 1) ==24513== malloc/free: in use at exit: 0 bytes in 0 blocks. ==24513== malloc/free: 1 allocs, 1 frees, 80 bytes allocated. ==24513== For a detailed leak analysis, rerun with: --leak-check=yes ==24513== For counts of detected errors, rerun with: -v On my machine "man memcpy" says "...The memory areas may not overlap. Use memmove(3) if the memory areas do overlap. ..." -- Summary: builtin operator= generates memcpy with overlapping memory regions Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Raimund dot Merkert at baesystems dot com GCC host triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32667
next reply other threads:[~2007-07-07 17:55 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-07-07 17:55 Raimund dot Merkert at baesystems dot com [this message] 2007-07-07 18:19 ` [Bug c++/32667] " pcarlini at suse dot de 2007-07-07 22:36 ` Raimund dot Merkert at baesystems dot com 2007-07-08 19:46 ` [Bug middle-end/32667] " rguenth at gcc dot gnu dot org 2007-07-08 20:53 ` pcarlini at suse dot de 2009-05-06 16:37 ` ppluzhnikov at google dot com
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-32667-5307@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).