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?
2. How to check whether one of the PROGRAM_SUMMARY has issue?

Thanks a lot for any help.

Qing

Reply via email to