public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jan Hubicka <hubicka@ucw.cz>
To: Qing Zhao <qing.zhao@oracle.com>
Cc: gcc Patches <gcc-patches@gcc.gnu.org>
Subject: Re: HELP: Questions on multiple PROGRAM_SUMMARY sections in a profiling data file
Date: Wed, 8 Mar 2023 14:19:59 +0100	[thread overview]
Message-ID: <ZAiLfyG8u2UE0FZd@kam.mff.cuni.cz> (raw)
In-Reply-To: <520B12AE-711B-48B1-926F-A543131F8095@oracle.com>

> Hi, Jan,
> 
> I am studying one profiling feedback ICE bug with GCC8 recently. 
> It’s an assertion failure inside the routine “compute_working_sets”of gcov-io.c:
> 
> gcov_nonruntime_assert (ws_ix == NUM_GCOV_WORKING_SETS);
> 
> After some debugging and study, I found that the corresponding .gcda file has two PROGRAM_SUMMARY sections:
> 
> foo.gcda:  a3000000: 202:PROGRAM_SUMMARY checksum=0x91f3e3ae 
> foo.gcda:                counts=10831, runs=0, sum_all=478965, run_max=125615, sum_max=201126 
> foo.gcda:                counter histogram: 
> foo.gcda:                 0: num counts=10187, min counter=0, cum_counter=0 
> … 
> foo.gcda:                51: num counts=1, min counter=14524, cum_counter=14524 
> foo.gcda:                63: num counts=1, min counter=125615, cum_counter=125615 
> foo.gcda:  a3000000: 137:PROGRAM_SUMMARY checksum=0xcf9f0896 
> foo.gcda:                counts=10502, runs=1, sum_all=48618, run_max=13999, sum_max=14046 
> foo.gcda:                counter histogram: 
> foo.gcda:                 0: num counts=9821, min counter=0, cum_counter=0 
> … 
> foo.gcda:                43: num counts=1, min counter=3830, cum_counter=3830 
> foo.gcda:                50: num counts=1, min counter=13999, cum_counter=13999 
> 
> Looks like the 2nd PROGRAM_SUMMARY has some issue. If I manually change gcc/coverage.c 
> to ignore the 2nd PROGRAM_SUMMARY section, the ICE disappears. 
> 
> I have several questions for the profiling feedback data file:
> 
> 1. Under what situation, there will be multiple PROGRAM_SUMMARY sections for one module?

This is itended to resolve situations where one object file is linked
into multiple final binaries (just like libbackend is linked into
multiple FEs).  The overall binary checksum is known to
the runtime and it creates entry for each checksum.
> 2. How to check whether one of the PROGRAM_SUMMARY has issue?

The histograms was added by google to get better threshold for hot/cold
partitioning. They never worked too well, because it is hard to merge
histograms from multipe runs meaningfully, so we dropped them some time
ago.  With LTO it is easier to produce the histogram after reading all
profiles together and without LTO we use easier heuristics that only
computes constant fraction of maximum number of iterations.

What confuses me is the first summary having runs=0.  I wonder how with
zero runs it even has an entry?

What is the assert that fials in gcov-io.c?

Honza

> 
> Thanks a lot for any help.
> 
> Qing

  reply	other threads:[~2023-03-08 13:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-07 19:55 Qing Zhao
2023-03-08 13:19 ` Jan Hubicka [this message]
2023-03-08 15:00   ` Qing Zhao

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=ZAiLfyG8u2UE0FZd@kam.mff.cuni.cz \
    --to=hubicka@ucw.cz \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=qing.zhao@oracle.com \
    /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: link
Be 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).