https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80911

--- Comment #14 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Martin Liška from comment #11)
> Ok, I'm probably starting to know what's wrong. Can you please following
> patch and provide me output:
> 

I have not yet been able to reproduce the problem in a standalone build and
test (and I need to keep the build I encountered this in undisturbed). So it's
not easy for me to try this out atm.


OTOH, I think I managed to pin-point the problem with valgrind when running
gcov:
...
==23606== Conditional jump or move depends on uninitialised value(s)
==23606==    at 0x405E70: read_graph_file() (gcov.c:1391)
==23606==    by 0x404BD5: process_file(char const*) (gcov.c:914)
==23606==    by 0x40454C: main (gcov.c:666)
==23606== 
gcov-1.gcno:corrupted
gcov-1.gcda:profile mismatch for 'main'
...

gcov.c:1391:
...
  1388            unsigned mark_catches = 0;
  1389            struct arc_info *arc;
  1390  
  1391            if (src >= fn->blocks.size () || fn->blocks[src].succ)
  1392              goto corrupt;
  1393  
  1394            while (num_dests--)
...

So, AFAIU, the immediate problem is that the corruption test reads
uninitialized memory (which I think confirms your analysis).

Reply via email to