This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/32276] [4.3 Regression] New libmudflap failures
- From: "rob1weld at aol dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jun 2007 11:24:41 -0000
- Subject: [Bug target/32276] [4.3 Regression] New libmudflap failures
- References: <bug-32276-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from rob1weld at aol dot com 2007-06-12 11:24 -------
These bug were first mentioned in report:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31681
Confirmed for similar target:
Results for 4.3.0 20070611 (experimental) testsuite on i686-pc-linux-gnu
http://gcc.gnu.org/ml/gcc-testresults/2007-06/msg00573.html
--- My Notes ---
Screen output:
=== libmudflap tests ===
Schedule of variations:
unix
Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /root/downloads/gcc-4_3-trunk/libmudflap/testsuite/config/default.exp as
tool-and-target-specific interface file.
Running
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.c/cfrags.exp ...
Running
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.c/externs.exp ...
Running
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.c++/c++frags.exp
...
FAIL: libmudflap.c++/pass41-frag.cxx execution test
FAIL: libmudflap.c++/pass41-frag.cxx (-static) execution test
FAIL: libmudflap.c++/pass41-frag.cxx ( -O) execution test
FAIL: libmudflap.c++/pass41-frag.cxx (-O2) execution test
FAIL: libmudflap.c++/pass41-frag.cxx (-O3) execution test
Running
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.c++/ctors.exp ...
Running
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.cth/cthfrags.exp
...
=== libmudflap Summary ===
# of expected passes 1985
# of unexpected failures 5
Log file "i686-pc-linux-gnu/libmudflap/testsuite/libmudflap.log" output:
mudflap violation 1 (check/read): time=1181641131.727908 ptr=0x401fd640 size=4
pc=0x40027c0d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__mf_check+0x3d)
[0x40027c0d]
./pass41-frag.exe(main+0x2bb) [0x8048f7b]
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__wrap_main+0x4f)
[0x4002745f]
number of nearby objects: 0
FAIL: libmudflap.c++/pass41-frag.cxx execution test
mudflap violation 1 (check/read): time=1181641140.406737 ptr=0x80fb280 size=4
pc=0x804b3d0
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
[0x804b3d0]
[0x804851b]
[0x804b416]
number of nearby objects: 0
FAIL: libmudflap.c++/pass41-frag.cxx (-static) execution test
mudflap violation 1 (check/read): time=1181641147.350329 ptr=0x401fd640 size=4
pc=0x40027c0d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__mf_check+0x3d)
[0x40027c0d]
./pass41-frag.exe(main+0x1b1) [0x8048e65]
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__wrap_main+0x4f)
[0x4002745f]
number of nearby objects: 0
FAIL: libmudflap.c++/pass41-frag.cxx ( -O) execution test
mudflap violation 1 (check/read): time=1181641153.350016 ptr=0x401fd640 size=4
pc=0x40027c0d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__mf_check+0x3d)
[0x40027c0d]
./pass41-frag.exe(main+0x2bb) [0x8048f7b]
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__wrap_main+0x4f)
[0x4002745f]
number of nearby objects: 0
FAIL: libmudflap.c++/pass41-frag.cxx (-O2) execution test
mudflap violation 1 (check/read): time=1181641160.020512 ptr=0x401fd640 size=4
pc=0x40027c0d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__mf_check+0x3d)
[0x40027c0d]
./pass41-frag.exe(main+0x2bb) [0x8049f7b]
/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs/libmudflap.so.0(__wrap_main+0x4f)
[0x4002745f]
number of nearby objects: 0
FAIL: libmudflap.c++/pass41-frag.cxx (-O3) execution test
All the log entries show "number of nearby objects: 0". Does this mean that it
is
not the test itself that is failing but instead something other than the test -
IE:
GXX is compiling incorrect code or the libraries are incorrectly written.
# cat
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx
#include <string>
#include <iostream>
int
main (int argc, char *argv[])
{
std::string myStr = "Hello, World!";
std::cout << myStr << std::endl;
return 0;
}
/opt/gcc-4_3-build/./gcc/g++ -shared-libgcc -B/opt/gcc-4_3-build/./gcc
-nostdinc++ -L/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/src
-L/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/src/.libs
-B/usr/test/i686-pc-linux-gnu/bin/ -B/usr/test/i686-pc-linux-gnu/lib/ -isystem
/usr/test/i686-pc-linux-gnu/include -isystem
/usr/test/i686-pc-linux-gnu/sys-include -ffloat-store -mfpmath=sse
-march=athlon-xp -msse2 -ggdb3 -DDEBUG_ASSERT -g -O2 -D_GLIBCXX_ASSERT
-ffunction-sections -fdata-sections -fmessage-length=0 -g -O2 -ffloat-store
-mfpmath=sse -march=athlon-xp -msse2 -D_GNU_SOURCE
-I/root/downloads/gcc-4_3-trunk/libmudflap/testsuite
-I/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/.. -I.. -nostdinc++
-I/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/i686-pc-linux-gnu
-I/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include
-I/root/downloads/gcc-4_3-trunk/libstdc++-v3/libsupc++
-I/root/downloads/gcc-4_3-trunk/libstdc++-v3/include/backward
-I/root/downloads/gcc-4_3-trunk/libstdc++-v3/testsuite/util
-L/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/.libs
/root/downloads/gcc-4_3-trunk/libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx
-O3 -fmudflap -lmudflap
-L/opt/gcc-4_3-build/i686-pc-linux-gnu/./libmudflap/testsuite -ldl -lm -o
./pass41-frag.exe
This turns off the cause of libmudflap's error:
# export MUDFLAP_OPTIONS="-ignore-reads"
# ./pass41-frag.exe
Hello, World!
Normal libmudflap operation (doesn't seem to show much wrong):
# export -n MUDFLAP_OPTIONS
# ./pass41-frag.exe
*******
mudflap violation 1 (check/read): time=1181640311.137456 ptr=0xb7dd5740 size=4
pc=0xb7deb11d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_check+0x3d) [0xb7deb11d]
./pass41-frag.exe(main+0x2bb) [0x8049eeb]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__wrap_main+0x49) [0xb7deabf9]
number of nearby objects: 0
Hello, World!
Show what is set or reset in libmudflap:
# export MUDFLAP_OPTIONS="-help"
# ./pass41-frag.exe
This is a single-threaded thread-unaware GCC "mudflap" memory-checked binary.
Mudflap is Copyright (C) 2002-2004 Free Software Foundation, Inc.
The mudflap code can be controlled by an environment variable:
$ export MUDFLAP_OPTIONS='<options>'
$ <mudflapped_program>
where <options> is a space-separated list of
any of the following options. Use `-no-OPTION' to disable options.
-mode-nop mudflaps do nothing
-mode-populate mudflaps populate object tree
-mode-check mudflaps check for memory violations [active]
-mode-violate mudflaps always cause violations (diagnostic)
-viol-nop violations do not change program execution [active]
-viol-abort violations cause a call to abort()
-viol-segv violations are promoted to SIGSEGV signals
-viol-gdb violations fork a gdb process attached to current
program
-trace-calls trace calls to mudflap runtime library
-verbose-trace trace internal events within mudflap runtime library
-collect-stats collect statistics on mudflap's operation
-sigusr1-report print report upon SIGUSR1
-internal-checking perform more expensive internal checking
-print-leaks print any memory leaks at program shutdown
-check-initialization detect uninitialized object reads
-verbose-violations print verbose messages when memory violations occur
[active]
-abbreviate abbreviate repetitive listings [active]
-timestamps track object lifetime timestamps [active]
-ignore-reads ignore read accesses - assume okay
-wipe-stack wipe stack objects at unwind
-wipe-heap wipe heap objects at free
-heur-proc-map support /proc/self/map heuristics
-heur-stack-bound enable a simple upper stack bound heuristic
-heur-start-end support _start.._end heuristics
-heur-stdlib register standard library data (argv, errno, stdin,
...) [active]
-free-queue-length=N queue N deferred free() calls before performing them
[4]
-persistent-count=N keep a history of N unregistered regions [100]
-crumple-zone=N surround allocations with crumple zones of N bytes
[32]
-lc-adapt=N adapt mask/shift parameters after N cache misses
[1000003]
-backtrace=N keep an N-level stack trace of each call context [4]
Modified libmudflap operation (seems to show much more problems):
# export MUDFLAP_OPTIONS="-check-initialization"
# ./pass41-frag.exe
*******
mudflap violation 1 (check/read): time=1181642670.810917 ptr=0x80ce238 size=4
pc=0xb7ee011d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:609
(main)'
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_check+0x3d) [0xb7ee011d]
./pass41-frag.exe(main+0x3d5) [0x804a005]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__wrap_main+0x49) [0xb7edfbf9]
Nearby object 1: checked region begins 0B into and ends 3B into
mudflap object 0x80ce278: name=`malloc region'
bounds=[0x80ce238,0x80ce251] size=26 area=heap check=1r/0w liveness=1
alloc time=1181642670.810782 pc=0xb7edfb9d
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_register+0x3d) [0xb7edfb9d]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__real_malloc+0xde) [0xb7ee105e]
/usr/lib/gcc/4.2.0/libstdc++.so.6(_Znwj+0x29) [0xb7e9feb9]
/usr/lib/gcc/4.2.0/libstdc++.so.6(_ZNSs4_Rep9_S_createEjjRKSaIcE+0x35)
[0xb7e7cec5]
Nearby object 2: checked region begins 3727B after and ends 3730B after
mudflap dead object 0x80cd3f0: name=`malloc region'
bounds=[0x80cd3a8,0x80cd3a9] size=2 area=heap check=0r/0w liveness=0
alloc time=1181642670.809614 pc=0xb7edfb9d
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_register+0x3d) [0xb7edfb9d]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__real_malloc+0xde) [0xb7ee105e]
/lib/libc.so.6(__strdup+0x30) [0xb7ce4740]
/usr/lib/gcc/4.2.0/libstdc++.so.6(_ZNSt5ctypeIcEC1EPKtbj+0x77)
[0xb7e36a47]
dealloc time=1181642670.809891 pc=0xb7edfb46
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_unregister+0x36) [0xb7edfb46]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__real_free+0x88) [0xb7ee0918]
/usr/lib/gcc/4.2.0/libstdc++.so.6(_ZNSt5ctypeIcEC1EPKtbj+0xc9)
[0xb7e36a99]
/usr/lib/gcc/4.2.0/libstdc++.so.6(_ZNSt6locale5_ImplC1Ej+0xc8)
[0xb7e3e198]
number of nearby objects: 2
*******
mudflap violation 2 (check/read): time=1181642670.812129 ptr=0xb7eca740 size=4
pc=0xb7ee011d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ostream:546
(main)'
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_check+0x3d) [0xb7ee011d]
./pass41-frag.exe(main+0x2bb) [0x8049eeb]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__wrap_main+0x49) [0xb7edfbf9]
number of nearby objects: 0
Hello, World!
*******
mudflap violation 3 (check/read): time=1181642670.812286 ptr=0x80ce238 size=12
pc=0xb7ee011d
location=`/opt/gcc-4_3-build/i686-pc-linux-gnu/libstdc++-v3/include/ext/atomicity.h:69
(main)'
/usr/lib/gcc/4.2.0/libmudflap.so.0(__mf_check+0x3d) [0xb7ee011d]
./pass41-frag.exe(main+0x319) [0x8049f49]
/usr/lib/gcc/4.2.0/libmudflap.so.0(__wrap_main+0x49) [0xb7edfbf9]
Nearby object 1: checked region begins 0B into and ends 11B into
mudflap object 0x80ce278: name=`malloc region'
Nearby object 2: checked region begins 3727B after and ends 3738B after
mudflap dead object 0x80cd3f0: name=`malloc region'
number of nearby objects: 2
The errors don't seem to come from "pass41-frag.cxx", the errors seem to come
from:
libstdc++-v3/include/bits/basic_string.h:609
libstdc++-v3/include/ostream:546
libstdc++-v3/include/ext/atomicity.h:69
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32276