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