Bug 27738 - error: coverage mismatch
Summary: error: coverage mismatch
Status: RESOLVED DUPLICATE of bug 20815
Alias: None
Product: gcc
Classification: Unclassified
Component: gcov-profile (show other bugs)
Version: 4.1.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-05-23 08:42 UTC by mathieu lacage
Modified: 2006-05-23 12:05 UTC (History)
3 users (show)

See Also:
Host: i386-redhat-linux
Target: i386-redhat-linux
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mathieu lacage 2006-05-23 08:42:06 UTC
I work on a small c++ project named yans (http://yans.inria.fr). Whenever I try to perform a profile-directed optimized build, I get the following errors with the FC5-provided compiler:

src/ipv4/ipv4-end-point.cc: In function ‘void<unnamed>::invoke_now(yans::Callback<void, yans::Ipv4EndPoint*, yans::empty, yans::empty, yans::empty>, yans::Ipv4EndPoint*)’:
src/ipv4/ipv4-end-point.cc:92: error: coverage mismatch for function ‘_ZN55_GLOBAL__N_src_ipv4_ipv4_end_point.cc_00000000_D34075F610invoke_nowEN4yans8CallbackIvPNS0_12Ipv4EndPointENS0_5emptyES4_S4_EES3_’ while reading counter ‘arcs’
src/ipv4/ipv4-end-point.cc:92: error: checksum is 1b860dda instead of 69a79691


This obviously happens during the profile-directed optimized rebuild following a single run of my benchmarking application.

To reproduce:
1) download the code
hg clone  http://yans.inria.fr/code/yans yans-buggy
cd yans-buggy
hg revert -r a0534ece96ea
2) build the code 
make opti-arc

This code relies on gnu make 0.80 at least and mercurial (to download the right version of the code) 0.8.x. 

I have no idea on how I could reduce this test case.
Comment 1 mathieu lacage 2006-05-23 08:56:22 UTC
hrm, ok, I tried to reproduce the bug with less code involved. If you pull changeset 020b7defcc5f instead:
hg clone http://yans.inria.fr/code/yans yans-buggy
cd yans-buggy
hg revert -r 020b7defcc5f

and run:
make opti-arc VERBOSE=y

g++ -fprofile-use -Wall -Werror -g3 -O3 -DNDEBUG=1  -DRUN_SELF_TESTS=1 -DINL_EXPE=inline -I./src/simulator -I./src/common -I./src/test -I./src/host -I./src/ipv4 -I./src/arp  -DDISABLE_IPV4_CHECKSUM=1 -fPIC -I./build-dir/opti-arc/include  -Wp,-M,-MP,-MM,-MT,./build-dir/opti-arc/src/common/reference-list-test.o,-MF,./build-dir/opti-arc/src/common/reference-list-test.o.P -c -o ./build-dir/opti-arc/src/common/reference-list-test.o src/common/reference-list-test.cc
src/common/reference-list-test.cc: In destructor ‘virtual<unnamed>::RefTest::~RefTest()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC387RefTestD0Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 436b0859 instead of 9f668c2a
src/common/reference-list-test.cc: In destructor ‘virtual<unnamed>::RefTest::~RefTest()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC387RefTestD1Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 9f0692ee instead of 430b169d
src/common/reference-list-test.cc: In member function ‘void yans::ReferenceList<OBJ_PTR>::insert_self_in_other(const yans::ReferenceList<OBJ_PTR>&) [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEE20insert_self_in_otherERKS4_’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 8777197f instead of 45c2bfb1
src/common/reference-list-test.cc: In member function ‘void yans::ReferenceList<OBJ_PTR>::remove_from_list() [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEE16remove_from_listEv’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is e2240709 instead of 5f1e525e
src/common/reference-list-test.cc: In member function ‘void yans::ReferenceList<OBJ_PTR>::set(OBJ_PTR) [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEE3setES3_’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 85fec9cf instead of 59f34dbc
src/common/reference-list-test.cc: In member function ‘yans::ReferenceList<OBJ_PTR>& yans::ReferenceList<OBJ_PTR>::operator=(const yans::ReferenceList<OBJ_PTR>&) [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEEaSERKS4_’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 27f4641 instead of de72c232
src/common/reference-list-test.cc: In copy constructor ‘yans::ReferenceList<OBJ_PTR>::ReferenceList(yans::ReferenceList<OBJ_PTR>&) [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEEC1ERS4_’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 5af78fcc instead of b4d2a5ce
src/common/reference-list-test.cc: In constructor ‘yans::ReferenceList<OBJ_PTR>::ReferenceList(const OBJ_PTR&) [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEEC1ERKS3_’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 29ef944 instead of de937d37
src/common/reference-list-test.cc: In destructor ‘yans::ReferenceList<OBJ_PTR>::~ReferenceList() [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEED1Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 6b1e2081 instead of b07ef094
src/common/reference-list-test.cc: In constructor ‘yans::ReferenceList<OBJ_PTR>::ReferenceList() [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEEC1Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 466838e6 instead of 9d08e8f3
src/common/reference-list-test.cc: In member function ‘OBJ_PTR yans::ReferenceList<OBJ_PTR>::operator->() [with OBJ_PTR = <unnamed>::A*]’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN4yans13ReferenceListIPN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AEEptEv’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 90db3ff2 instead of 4bbbefe7
src/common/reference-list-test.cc: In member function ‘virtual bool<unnamed>::RefTest::run_tests()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC387RefTest9run_testsEv’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 8bafb28e instead of ceae52c8
src/common/reference-list-test.cc: In member function ‘void<unnamed>::RefTest::test(yans::ReferenceList<<unnamed>::A*>)’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC387RefTest4testEN4yans13ReferenceListIPNS_1AEEE’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 38e2bbc4 instead of 76d07c9f
src/common/reference-list-test.cc: In constructor ‘<unnamed>::RefTest::RefTest()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC387RefTestC1Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 53613c41 instead of 8f6cb832
src/common/reference-list-test.cc: In constructor ‘<unnamed>::RefTest::RefTest()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC387RefTestC2Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 33168e2f instead of ef1b0a5c
src/common/reference-list-test.cc: In member function ‘void<unnamed>::A::trace()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381A5traceEv’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is b0b5b04b instead of e73d459a
src/common/reference-list-test.cc: In destructor ‘<unnamed>::A::~A()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AD1Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is 71255db6 instead of 5b27854d
src/common/reference-list-test.cc: In constructor ‘<unnamed>::A::A()’:
src/common/reference-list-test.cc:117: error: coverage mismatch for function ‘_ZN62_GLOBAL__N_src_common_reference_list_test.cc_00000000_168CDC381AC1Ev’ while reading counter ‘arcs’
src/common/reference-list-test.cc:117: error: checksum is c12cc451 instead of eb2e1caa
make[1]: *** [build-dir/opti-arc/src/common/reference-list-test.o] Error 1
make[1]: Leaving directory `/home/mathieu/code/yans-head'
make: *** [rebuild-opti-arc-profile] Error 2
Comment 2 Richard Biener 2006-05-23 09:47:14 UTC
This is fixed in 4.2.0 I believe.  Try using -frandom-seed=0 for both the -fprofile-generate and -fprofile-use compilations as workaround.

*** This bug has been marked as a duplicate of 20815 ***
Comment 3 mathieu lacage 2006-05-23 12:05:40 UTC
yes, the -frandom-seed thing fixes the build. The speedup I get out of profile-drive optimization of the code for a static link is:
no profile: 14.76s +/- 0.07
profile: 14.44s +/- 0.06