Bug #73111 [Opn]: make prof-use don't work -> still profiling code
| From: | spam2 at rhsoft dot net | Date: | Mon, 19 Sep 2016 12:20:40 +0000 |
| Subject: | Bug #73111 [Opn]: make prof-use don't work -> still profiling code | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-204126@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=73111&edit=1
ID: 73111
User updated by: spam2 at rhsoft dot net
Reported by: spam2 at rhsoft dot net
Summary: make prof-use don't work -> still profiling code
Status: Open
Type: Bug
Package: Compile Failure
Operating System: Linux
PHP Version: 7.0.11
Block user comment: N
Private report: N
New Comment:
the problem is that "make prof-use" don't do anything while
"-Wno-coverage-mismatch" is a dirty workaround for now - "-always-make" should
not be needed
that sequence should work out-of-the-box instead "make prof-use" thingink "oh,
already built, nothing to do"
make prof-gen
make test
make prof-use
Previous Comments:
------------------------------------------------------------------------
[2016-09-19 11:49:34] nikic@php.net
Without having looked into it, I suspect that the error you got in your last comment is because
--always-make forces a regeneration of the lexer and you have a different re2c version installed
which was used to generate the lexer in the repo, so you end up with minor differences in control
flow. It will likely work if you run the whole thing (including profile generation) a second time.
------------------------------------------------------------------------
[2016-09-19 11:43:31] spam2 at rhsoft dot net
"make --always-make" seems to help partially
echo "PROFILE-GUIDED-OPTIMIZATION: Stage 1"
make %{?_smp_mflags} prof-gen
/rpmbuild/PHP-PGO/profile.sh $PWD
echo "PROFILE-GUIDED-OPTIMIZATION: Stage 2"
make --always-make %{?_smp_mflags} prof-use
but:
Zend/zend_language_scanner.l:2406:1: error: the control flow of function 'lex_scan' does
not match its profile data (counter 'indirect_call') [-Werror=coverage-mismatch]
Zend/zend_language_scanner.l:2406:1: error: the control flow of function 'lex_scan' does
not match its profile data (counter 'time_profiler') [-Werror=coverage-mismatch]
cc1: some warnings being treated as errors
Makefile:1721: recipe for target 'Zend/zend_ini_scanner.lo' failed
make[1]: *** [Zend/zend_ini_scanner.lo] Error 1
cc1: some warnings being treated as errors
Makefile:1717: recipe for target 'Zend/zend_language_scanner.lo' failed
make[1]: *** [Zend/zend_language_scanner.lo] Error 1
make[1]: Leaving directory '/home/builduser/rpmbuild/BUILD/php-7.0.11'
Makefile:302: recipe for target 'prof-use' failed
make: *** [prof-use] Error 2
Fehler: Fehler-Status beim Beenden von /var/tmp/rpm-tmp.1UuVW4 (%build)
------------------------------------------------------------------------
[2016-09-19 08:21:56] spam2 at rhsoft dot net
Description:
------------
make prof-gen
make test
make prof-use
the "make prof-use" just takes a second while i would expect a full compile using the
gcda-files filled with informations wude running "make test" and that part works becuase
while "make test" is running the timestamps of that files are changing
after that there is still the profiling code in the binaries because running it on another machine
at httpd startup you see these messages in the apache-errorlog
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/zlib/.libs/zlib.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/pcre/.libs/php_pcre.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/libxml/.libs/libxml.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/interval.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/parse_iso_intervals.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/unixtime2tm.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/tm2unixtime.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/timelib.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/parse_tz.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/parse_date.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/dow.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/lib/.libs/astro.gcda:Skip
profiling:/home/builduser:Cannot create directory
profiling:/home/builduser/rpmbuild/BUILD/php-7.0.11/ext/date/.libs/php_date.gcda:Ski
Test script:
---------------
make prof-gen
make test
make prof-use
yes, i know that "make test" is probably not the best thing for PGO but a good start to
get the build-process implemented and then replace it with running custom php-code and "make
test" at the end with the final build
Expected result:
----------------
a final PGO build without the profiling code
Actual result:
--------------
binaries which stil contain profiling code after "make prof-use"
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=73111&edit=1