It seems that this happens if some block, for which the coverage information has been captured before, is no longer present in the object file. The problem is that the .gcno file will still store the coverage information for such a block.
To solve the problem it is sufficient to just remove the .gcno file and rebuild your unit test.
For example, I have encountered an error like this:
[...]
Processing CMakeFiles/UnitTest.dir/main.cpp.gcda
[...]
Processing CMakeFiles/UnitTest.dir/Math/BoundingBox.cpp.gcda
geninfo: Negative length at /usr/bin/geninfo line 2413.
Processing CMakeFiles/UnitTest.dir/Math/Vectors.cpp.gcda
make[3]: *** [source/CMakeFiles/] Error 255
In this case it was sufficient to delete the "CMakeFiles/UnitTest.dir/Math/Vectors.cpp.gcno" file and then rebuild the "UnitTest" project.